大家好,又见面了,我是你们的朋友全栈君。
移位运算,所有移位以5和-5为例
移位运算
可以移位运算的类型有:iuint,int,lang等类型.我们本次使用int类型
一个int类型占4个字节,共32位,带符号位,所以最高位位符号位(使用0,1表示符号位)
我们首先需要了解正数和负数的二进制码分别如何表示(以5和-5为例)
正数:0000 0000 0000 0101
负数:1000 0000 0000 0101
移位操作在二进制中都是补码移位在转会为原码得到相应的值
正数的反码,补码与原码相同
负数的反码为除符号位全部取反
负数的补码为反码加1
所以 在对正数进行移位操作时就是对原码进行操作
负数是对补码操作,操作完成后再转换为原码得到对应的值
所以-5的补码为:1111 1111 1111 1011
左移(<<)
正数
5左移三位:0000 0000 0010 1000 =40
负数
-5左移三位:补码:1111 1111 1101 0111
原码:1000 0000 0010 1000
得:-40
带符号右移(>>)(右移向前面补对应的符号位所对应的值(正数补0,负数补1))
正数
5右移三位:0000 0000 0000 0000 =0
负数
-5右移三位:补码:1111 1111 1111 1111
反码:1111 1111 1111 1110
原码:1000 0000 0000 0001
得:-1
不带符号右移(>>>)(>>>为java独有语法)
正数
5右移三位:0000 0000 0000 0000 =0
负数
-5右移三位:补码:0001 1111 1111 1111 1111 1111 1111 1111
反码:0001 f f f f f f 1110
得:536 870 911
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/158530.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...