在Java中,所有数据的表示方法都是以补码的形式表示,如果没有特殊说明,Java中的数据类型默认是int,int数据类型的长度是8位,一位是四个字节,就是32字节,32bit.
一:与运算符(&)
运算规则:
0&0=0;0&1=0;1&0=0;1&1=1
即:两个同时为1,结果为1,否则为0
例如:5&7
十进制5转为二进制的5:0000 0101
十进制7转为二进制的7:0000 0111
结果:0000 0101 ->转为十进制:5
即:5&7 = 5
二:或运算(|)
运算规则:
0|0=0; 0|1=1; 1|0=1; 1|1=1;
即 :参加运算的两个对象,一个为1,其值为1。
例如:5|7 即 0000 0101 | 0000 0111 = 0000 0111,因此,5|7=7。
三:异或运算符(^)
运算规则可以简单理解为相加后不进位
运算规则:0^0=0; 0^1=1; 1^0=1; 1^1=0;
即:参加运算的两个对象,如果两个位为“异”(值不同),则该位结果为1,否则为0。
例如:5^7 = 0000 0101 ^ 0000 0111 =0000 0010,因此,5^7 = 7
性质:
1.N^0=N
2.N^N=0
3.同一批数,通过交换律结合律,最后异或出来是同一个数
四:左移(<<)
运算规则:二进制位向左移动相应位数,高处越位丢弃,低位补0;
如:5<<2,5=00000101,5<<2=00010100=20,即5 * 2ⁿ
公式:m<<n=m* 2ⁿ
五:右移(>>)
运算规则:二进制位向右移动相应位数,低位丢弃,高位补0;
>>>:无符号右移(注意:没有无符号左移)
无符号右移(注意:没有无符号左移)
正数做>>>
运算的时候和>>
是一样的。区别在于负数运算
六:非运算符(~)
运算规则:如果位为0,结果是1,如果位为1,结果是0.
在Java中,所有数据的表示方法都是以补码的形式表示
如:~37
8转为二进制是.
补码后为: 00000000 00000000 00000000 00
取反为:
因为高位是1,所以原码为负数,负数的补码是其绝对值的原码取反,末尾再加1。
因此,我们可将这个二进制数的补码进行还原: 首先,末尾减1得反码: 其次,将各位取反得原码:
00000000 00000000 00000000 00,此时二进制转原码为38
所以~37 = -38.
进制转换工具
加运算的两个对象,按二进制位进行运算。
进制转换地址:http://tool.oschina.net/hexconvert/
今天的文章 与,或,非,异或,左移,右移,位运算符号总结分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ji-chu/102616.html