收藏 分享(赏)

位移运算符.doc

上传人:hskm5268 文档编号:6214944 上传时间:2019-04-02 格式:DOC 页数:2 大小:18KB
下载 相关 举报
位移运算符.doc_第1页
第1页 / 共2页
位移运算符.doc_第2页
第2页 / 共2页
亲,该文档总共2页,全部预览完了,如果喜欢就下载吧!
资源描述

1、先说左移,左移就是把一个数的所有位都向左移动若干位,在 C 中用=类型长度.那么实际上 i,j 移动的就是 1 位,也就是 33%32 后的余数.在 gcc 下是这个规则,别的编译器是不是都一样现在还不清楚.总之左移就是: 丢弃最高位,0 补最低位再说右移,明白了左移的道理,那么右移就比较好理解了.右移的概念和左移相反,就是往右边挪动若干位,运算符是.右移对符号位的处理和左移不同,对于有符号整数来说,比如 int 类型,右移会保持符号位不变,例如:int i = 0x80000000;i = i 1; /i 的值不会变成 0x40000000,而会变成 0xc0000000就是说,符号位向右移

2、动后,正数的话补 0,负数补 1,也就是汇编语言中的算术右移.同样当移动的位数超过类型的长度时,会取余数,然后移动余数个位.负数 10100110 5(假设字长为 8 位),则得到的是 11111101总之,在 C 中,左移是逻辑/算术左移(两者完全相同),右移是算术右移,会保持符号位不变.实际应用中可以根据情况用左/右移做快速的乘/除运算,这样会比循环效率高很多. 例:C 语言中左移表示除以 2,这是由计算机工作原理导致的!但是要是 7,二进制数为 0111,右移一位得 3.5,但是右移之后二进制数变成 0011,是 3。不一样啊,怎模解释呢?答:移位操作符的两个操作数必须是整型的。整个移位表达式的值的类型也是整型的,而且,左移位操作符与右移位操作符的运算并不对称。0111 右移一位是把最后一位的 1 去掉,左边补个 0,得 0011,转换为十进制是 3,这是正确的。并不等同于除以 2 。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初级教育 > 小学教育

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报