java整形数值表示补码的由来
假设整形数值最多8位数,当采用无符号数表示法时,数值范围为0~255,而采用有符号数表示法时,可将128-255映射为-128~-1,而0-127保持不变,来表示数值范围-128~127:
128=1000_0000~-128
129=1000_0001~-127
130=1000_0010~-126
...
255=1111_1111~-1
0=0000_0000~0
1=0000_0001~1
....
127=0111_1111~127
实际上这种方法叫做补码表示法,例如给定一个负数-100需要得到它的补码需要将255-100+1=156~1001_1100。直观看来首位只要为1即为负数,而0则为正数,但不能简单的认为首位是符号位:
例如假设要表示-5~4之间的10个数,可以用0~9之间的5~9来表示-5~-1,而0~4保持不变,即:
5~-5
6~-4
7~-3
8~-2
9~-1
0~0
1~1
2~2
3~3
4~4
因此首位大于等于5的表示负数,而小于等于4的表示正数。这也说明了对于二进制而言,千万不要简单的将首位理解为符号位。
以上是 java整形数值表示补码的由来 的全部内容, 来源链接: utcz.com/z/512981.html