当前位置:网站首页>C陷阱与缺陷 第7章 可移植性缺陷 7.5 移位运算符
C陷阱与缺陷 第7章 可移植性缺陷 7.5 移位运算符
2022-07-30 17:10:00 【weixin_客子光阴】
移位运算符
在向右移位时,空出的位由0填充,还是由符号位的副本填充?
如果被移位的对象是无符号数,那么空出的位将被0填充。如果被移位的对象是有符号数,那么既可以空出的位都用0或者1填充,取决于C语言的实现。
移位计数(即移位操作的位数)允许的取值范围是什么?
如果被移位的对象长度为n位,那么移位计数必须大于或等于0,而严格小于n。因此,不可能做到在单次操作中将某个数的所有位都移出。因为只要加上这个限制,我们就能够在硬件上高效地实现移位运算。
即使C实现将符号位复制到空出的位中,有符号整数的向右移位运算并不等同于除以2的某次幂。要证明这一点,让我们考虑(-1)>>1,这个操作的结果一般不可能为0,但是(-1)/2在大多数C实现中的求值结果都是0。这意味着以除法运算来代替移位运算,将可能导致程序运行速度大大减慢。
low + high为非负,那么
mid = (low + high) >> 1;
mid = (low + high) / 2;
完全等效,而且前者的执行速度也要快很多。
#include<stdio.h>
int main()
{
printf("(-1)>>1 = %d, (-1)/2 = %d\n", (-1)>>1, (-1)/2);
return 0;
}
/* 输出:

*/
边栏推荐
- 查询表中开始日期与结束日期
- 【云商店公告】关于7月30日帮助中心更新通知
- ERROR 2003 (HY000) Can‘t connect to MySQL server on ‘localhost3306‘ (10061)解决办法
- 阿里巴巴中国站获得1688商品分类 API
- torch.optim.Adam() function usage
- 浅谈在线编辑器中增量编译技术的应用
- JMeter Notes 4 | JMeter Interface Introduction
- 代码越写越乱?那是因为你没用责任链
- 592. Fraction Addition and Subtraction
- Win11如何把d盘空间分给c盘?Win11d盘分盘出来给c盘的方法
猜你喜欢

论文阅读之《Color Constancy Using CNNs》

新零售saas小程序如何探索数字化门店的破局之路?

Error occurred while trying to proxy request The project suddenly can't get up
![[HarekazeCTF2019] Avatar Uploader 1](/img/2c/6dde7b8d34ba0deb334b4283e1e30e.png)
[HarekazeCTF2019] Avatar Uploader 1

MySQL超详细安装教程 手把手教你安装MySQL到使用MySQL 最简单的MySQL安装方式,这种方式装,卸载也简单

每日一题:两数之和

Go新项目-编译热加载使用和对比,让开发更自由(3)

C语言向MySQL插入数据

实现web实时消息推送的7种方案

微信小程序picker滚动选择器使用详解
随机推荐
疫情之下的裁员浪潮,7点建议帮你斩获心仪offer
Redis缓存穿透-热点缓存并发重建-缓存与数据库双写不一致-缓存雪崩
第5章 SQL高级处理
Paper reading (63): Get To The Point: Summarization with Pointer-Generator Networks
leetcode:1488. 避免洪水泛滥【二分 + 贪心】
PHP留言反馈管理系统源码
LeetCode167:有序数组两数之和
JMeter Notes 4 | JMeter Interface Introduction
OpenCV形状检测
web服务通过用户访问请求判断设备来源
中文字符集编码Unicode ,gb2312 , cp936 ,GBK,GB18030
Promise entry to proficient (1.5w word detailed explanation)
mysql进制安装与mysql密码破解
onenote use
说几个大厂分库分表的那点破事。
Discuz magazine/news report template (jeavi_line) UTF8-GBK template
基于MATLAB的电力系统短路故障分析与仿真
[极客大挑战 2020]Roamphp1-Welcome
牛客网刷题——运算符问题
Go新项目-编译热加载使用和对比,让开发更自由(3)