有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!


共 (5) 个答案

  1. # 1 楼答案

    这是因为二的补码,其中lef-most位用于表示一个数字是正(0)还是负(1)。因此,当你自己加上max int(相当于乘以2)时,就会发生这样的情况:

      011111111111111111111111
    + 011111111111111111111111
    __________________________
      111111111111111111111110
    

    111111111111111111111110代表-2

  2. # 2 楼答案

    Integer.MAX_VALUE0x7FFFFFFF。乘以2得到0xFFFFFFFE(相当于左移一位)。这是一个负数(第一位是1),是-2的二进制表示

  3. # 3 楼答案

    Int的最大值是2^31-1=2147483647=0111111111111111111111111111111111111(二进制数)最高位(这里是第一位0,表示整数是正数,1表示负数)

    (假设一个整数的长度是4字节),2*MAX_值,在计算机中,一个整数乘以2就是左移位(运算符<;<;)在位上,例如2<&书信电报;1 = 4; 2<&书信电报;2 = 8; 所以0111111111111111111111111111111111111111111111<&书信电报;1变成1111111111111111111111111111111111111110,等于小数点后的-2

  4. # 4 楼答案

    这是因为整数溢出

  5. # 5 楼答案

    你得到这个结果是因为integer overflow:在表示负整数的two's complement系统中,取011.....112的最大值乘以2得到^{2,对应于-2