“十进制字面常量具有一个很好的属性,即所有的十进制字面常量都是正的,而十六进制或是八进制字面常量并不具备这个属性”
怎么理解呢

解决方案 »

  1.   

    这个说法,其实我个人觉得要看场合。原文是说:
    十进制字面常量只有一个特性,即所有的十进制字面常量都是正数,如果想写一个负的十进制,则需要在正的十进制字面常量前加上“-”即可。
     
    十六进制或八进制字面常量可就不一定是正数或负数,是正还是负,则要根据当前情况看:如果十六进制和八进制字面常量的最高位被设置成了1,那么它们就是负数。
    实际上说的是计算机在处理数值是,最高位(bit)作为了符号位的问题。但其实 - 号,计算机也不能直接处理,所以即便是十进制实际处理时仍然用的是将最高位当作符号位的方式。
    反之,程序语言处理都比较智能了,所以写代码的时候也能这样:
    int a = -0x1A; // 即 负26
      

  2.   


    说的是高位——符号位,你不用负号的话,十进制int型最高只能用到第31个bit,最高位——第32bit位你是接触不到的,除非你加负号。
      

  3.   


    可以这样玩:
    private static int a = Integer.MAX_VALUE + 1;也可以直接这样玩:
    private static int a = (int) 2147483648l;都是:
    -2147483648不过讨论这些冷知识,价值不高。
      

  4.   

    十进制只能用正负号表示正负。其他2的X次方进制的可以由最高位的二进制码表示。is it?