任何整数类型都存在负数,那么java中是如何表示负数的呢。
例如 5 在 计算机中的二进制表示为 0101,那么其负数(-5)怎么表示呢?
通过这个步骤就行:
注意,在做如下操作之前,我们应该非常注意5的二进制表示,它的高位一定要为0,也就是说如果5写成101,那么我们必须先将其表示成0101,这样按位取反的时候高位才会变为1。
将5按位取反,标为 1010, 然后加上1,变为1011,即为-5在计算机中的表示。
反过来,看到1011,第一反应看他的高位,如果高位为1,则肯定是个负数,那么他到底是负几呢,如下操作:将1011按位取反,得到0100,然后加上1,则得到其值0101,为5。则说明1011代表的是-5。
下面再练习两个:
1. 写出101101的十进制表示?
第一步,取反,010010;
第二步,加1,010011;
第三步,计算十进制,1+2+16=19;
第四步,得出结论:101101 = -19。
2. 写出-24的二进制表示?
第一步,写出24的二进制表示,011000;
第二步,取反,100111;
第三步,加1,101000;
第四步,得出结论,-24 = 101000。
补码:计算机中,数都以补码的形式存放,正数的补码是其本身,负数的补码是其绝对值取反加1。
|