C语言操作符 移位操作符 位操作符 运算 难点 重点
发布时间:2022-09-28 11:42:03 281
相关标签:
以下所有操作符都是基于二进制进行的操作符
移位操作符
左移操作符 <<
移位规则
将整型数字的二进制补码向左移动。左边抛弃,右边补0;
使用
例如:
10的二进制补码为00000000000000000000000000001010,将10的二进制补码向左移动一位,右端不上一0,左端0由于超出32个比特位,所以抛弃。
而第二行由于整个二进制序列往左移动了一位,b的值变成了10:
难点重点和小知识点
1.那么,为什么a的值没有变化呢? 看这个语句,我们可以很明显地得到答案:移位运算符不是赋值运算符,不能给变量赋值,变量在没有被赋值的情况下本身的值是不变的。 使用移位运算符和使用算术运算符是类似的。
2.左移操作符有乘2的效果 如代码:
右移操作符 >>
移位规则
右移运算分两种:
- 逻辑移位 左边用0填充,右边丢弃
- 算术移位 左边用原该值的符号位填充,右边丢弃
使用
算术右移
如:
-1的补码为:
逻辑右移
如:
-1的补码为:
位操作符
按位与 &
2个整形的补码,对应的二进制位都为1,则为1,若对应的二进制位数字不同,则位0。如:
按位或 |
2个整形的补码,对应的二进制位一个为1,则为1,若对应的二进制位数字都为0,则位0。如:
按位异或 ^
两个整形的补码,对应的二进制位相同则为0,相异为1,如:
总结一下按位异或的小规律:
建议自行按照异或的规律验证小规律来熟悉异或操作符
文章来源: https://blog.51cto.com/u_15605728/5498467
特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报