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

回到顶部