java 中负数左移运算的疑问?
例子:-59 << 3
-59 的二进制原码:10111011 反码:11000100
补码:11000101
左移三位后的补码:00101000 反码:00100111
原码:01011000
01011000
转为十进制是 88
,但是在 java 中执行的结果是 -472
,请问是哪一步出错了,感激不尽
回答:
java 的 int 有 32 位,所以 -59 是
11111111 11111111 11111111 11000101
左移之后:
11111111 11111111 11111110 00101000
你再算算转回去是多少
以上是 java 中负数左移运算的疑问? 的全部内容, 来源链接: utcz.com/p/944670.html