大家好,又见面了,我是你们的朋友全栈君。
可以移位运算的类型有: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
5右移三位:0000 0000 0000 0000 =0
-5右移三位:补码:1111 1111 1111 1111 反码:1111 1111 1111 1110 原码:1000 0000 0000 0001 得:-1
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
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/158530.html原文链接:https://javaforall.cn