遗失的位置在哪里?

时间:2016-02-01 03:45:02

标签: java c++

我正在研究java中的移位运算符,这本书说'值<< num' , 如果value是int然后在左移操作之后,一旦限制超过我可以理解的int(int值的第31个位置)的限制,左位就会丢失,

我的问题很简单,丢失的位在哪里?

1 个答案:

答案 0 :(得分:3)

丢失的位不再存在。丢失的位不再在寄存器中,因为它们已被新位替换。作为移位操作的结果创建新位。寄存器只能保持但很多位,所以当发生移位,并且新位被放入寄存器时,丢失的位不再存在。丢失的比特无处可去。想想丢失的碎片从悬崖上掉下来。

有一个溢出标志,它是一个用于指示发生溢出的寄存器,但根据维基百科,逐位和移位操作可以使标志未定义或清除。以下是溢出标志的信息:https://en.wikipedia.org/wiki/Overflow_flag

点击此处获取有关算术溢出Arithmetic overflow的信息! 单击此处获取有关java Bitwise和Bit Shift运算符的信息Java Bit Operations