位运算符和移位运算符
2023-12-17 10:37:58
位运算
符号 | 规则 |
按位与& | 两位全为1,结果为1,否则为0 |
按位或| | 两位有一个为1,结果为1,否则为0 |
按位异或^ | 两位一个为0,一个为1,结果为1,否则为0 |
按位取反~ | 0->1? ?,? 1->0 |
1. 按位与&:2&3
2: 0010
3: 0011
---------
0010
2. 按位或? ?:? 2|3
2: 0010
3: 0011
---------
0011
3.按位异或^ : 2^3
2: 0010
3: 0011
---------
0001
?4.取反: ~2
2: 0010
---------
1101
移位运算符
运算规则
算术右移>>: 低位溢出,符号位不变,并用符号位补溢出的高位
算术左移<<:符号位不变,低位补0
>>>逻辑右移也叫无符号右移,运算规则是:低位溢出,高位补0
特别说明:没有<<<f符号
算术左移:
说明:int b = 5 << 2? ,表示将二进制数 5
左移两位 , 等价 5 * 2^2
二进制表示: 0000 0000 0000 0000 0000 0000 0000 0101
左移两位: 0000 0000 0000 0000 0000 0000 0001 0100
int b = -5 << 2;
二进制表示(32位整数): 1111 1111 1111 1111 1111 1111 1111 1011
左移两位: 1111 1111 1111 1111 1111 1111 1110 1100
算术右移:
说明:int b = 5 >> 2 , 表示将二进制数 5 右移动两位,等价?5 / 2^2
二进制表示: 0000 0000 0000 0000 0000 0000 0000 0101
右移两位: 0000 0000 0000 0000 0000 0000 0000 0001
?说明:当你使用算术右移 (>>
) 操作符时,对于正数,将其二进制表示向右移动指定的位数,左侧空出的位用0填充。对于负数,右移时同样右侧空出的位用0填充,但符号位会被保留。
二进制表示(32位整数): 1111 1111 1111 1111 1111 1111 1111 1011
右移两位: 1111 1111 1111 1111 1111 1111 1111 1110
逻辑右移:
说明:int b = 5>>>2
二进制表示: 0000 0000 0000 0000 0000 0000 0000 0101
无符号右移两位: 0000 0000 0000 0000 0000 0000 0000 0001
文章来源:https://blog.csdn.net/weixin_67573348/article/details/135036742
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!