1)机器数,比如11111111,如果是无符号的,应该是255,如果是有符号的,应该是-127
我想问下,电脑是怎么判断,这个数字什么时候是有表示带符号的呢?
机器数的补码可由原码得到。如果机器数是正数,则该机器数的补码与原码一样;如果机器数是负数,则该机器数的补码是对它的原码(除符号位外)各位取反,并在未位加1而得到的
采用8位二进制表示时,整数补码的表示范围:
最大为01111111,其真值为(127)10
最小为10000000,其真值为(一128)10补码最小数表示-128 是怎么计算的呀?
按照 10000000 先求反 11111111,然后加1,貌似8位码表示不了了呀,请赐教
public class OutputBinary {
public static void main(String[] args) {
System.out.println(Integer.toBinaryString(-128));
System.out.println(Integer.toBinaryString(-127));
System.out.println(Integer.toBinaryString(-126));
System.out.println(Integer.toBinaryString(-1));
System.out.println(Integer.toBinaryString(0));
System.out.println(Integer.toBinaryString(1));
System.out.println(Integer.toBinaryString(126));
System.out.println(Integer.toBinaryString(127));
}
}
/*
11111111111111111111111110000000
11111111111111111111111110000001
11111111111111111111111110000010
11111111111111111111111111111111
0
1
1111110
1111111
*/