当前位置:网站首页>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;
}
/* 输出:

*/
边栏推荐
- FP6606CMP5 CPC-16L USB类型-C和PD充电控制器 百盛电子代理商
- LeetCode167:有序数组两数之和
- Lotus explodes the block failed
- [MRCTF2020]Ezaudit
- Paper reading (63): Get To The Point: Summarization with Pointer-Generator Networks
- 一篇文 带你搞懂,虚拟内存、内存分页、分段、段页式内存管理(超详细)
- LeetCode167: Sum of two numbers in sorted array
- Mysql进阶优化篇01——四万字详解数据库性能分析工具(深入、全面、详细,收藏备用)
- fast shell porting
- 华为云数据治理生产线DataArts,让“数据'慧'说话”
猜你喜欢
![[HarekazeCTF2019]Avatar Uploader 1](/img/2c/6dde7b8d34ba0deb334b4283e1e30e.png)
[HarekazeCTF2019]Avatar Uploader 1

HUAWEI CLOUD data governance production line DataArts, let "data 'wisdom' speak"

Discuz magazine/news report template (jeavi_line) UTF8-GBK template

SYSCALL SWAPGS

说几个大厂分库分表的那点破事。

FP6600QSO SOP-8 USB专用充电端口控制器 用于快充电协议和QC2.0/3.0

LeetCode318: Maximum product of word lengths

《痞子衡嵌入式半月刊》 第 59 期

Redis缓存穿透-热点缓存并发重建-缓存与数据库双写不一致-缓存雪崩
![[极客大挑战 2020]Roamphp1-Welcome](/img/3b/2fa91f7478b8abf6efe0feafd24e58.png)
[极客大挑战 2020]Roamphp1-Welcome
随机推荐
Wanhua chemical fine chemical industry innovation product assembly
onenote使用
leetcode:1488. 避免洪水泛滥【二分 + 贪心】
2022-07-30 Androd 进入深度休眠后把WIFI给关掉,唤醒之后重新打开WIFI
crontab报错,但本地执行正常
Chapter 5 Advanced SQL Processing
浅谈在线编辑器中增量编译技术的应用
bean的生命周期
Mongoose模块
图注意力机制
第六章:决胜秋招
每日一题:两数之和
关于内和调试无法查看ntdll内存的问题
Insert data into MySQL in C language
Error occurred while trying to proxy request项目突然起不来了
腾讯专家献上技术干货,带你一览腾讯广告召回系统的演进
Excel导入和导出
强烈推荐APP破解常用工具集合!
FP6606CMP5 CPC-16L USB类型-C和PD充电控制器 百盛电子代理商
阿里SIM-基于检索的用户行为兴趣CTR模型(Search-based user Interest Model(SIM))