Java中的int型数据做移位操作后,只有数值有段的低5为才能用,long型只有低6位才有用,帮忙解释下。
3个回答
展开全部
防止移位超过int型所具有的位数
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
int value = Integer.parseInt(“00001111101001011111000010101100″,2);//即value=262533292
value <<= -38
若是对int的值移负数位,java会截取那个负数的低5位。
-38的二进制表示是:11111111111111111111111111011010,截取低5位得:11010,这个数是26,也就是说:
value <<= -38 等价于 value <<= 26,得到的二进制是10110000000000000000000000000000,首位为1,
所以该二进制是补码,换成其绝对值的源码为01010000000000000000000000000000,对应的十进制为1342177280,
加上负号就是-1342177280。
对于int是取低5位,对于long是取低6位
原贴(转):http://www.ticmy.com/?p=46
value <<= -38
若是对int的值移负数位,java会截取那个负数的低5位。
-38的二进制表示是:11111111111111111111111111011010,截取低5位得:11010,这个数是26,也就是说:
value <<= -38 等价于 value <<= 26,得到的二进制是10110000000000000000000000000000,首位为1,
所以该二进制是补码,换成其绝对值的源码为01010000000000000000000000000000,对应的十进制为1342177280,
加上负号就是-1342177280。
对于int是取低5位,对于long是取低6位
原贴(转):http://www.ticmy.com/?p=46
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询