建议你baidu下“补码”,就会比较清楚了,第一位是符号位。
00000000 => 0
11111111 => -1
10000000 => -128
01111111 => 127
◎ 负数的补码
负数的补码是对其原码逐位取反,但符号位除外;然后整个数加1。
同一个数字在不同的补码表示形式里头,是不同的。比方说-15的补码,在8位2进制里头是11110001,然而在16位2进制补码表示的情况下,就成了1111111111110001。在这篇补码概述里头涉及的补码转换默认了把一个数转换成8位2进制的补码形式,每一种补码表示形式都只能表示有限的数字。
【例2】求-7的补码。
因为给定数是负数,则符号位为“1”。
后七位:-7的原码(10000111)→按位取反(11111000)(负数符号位不变)→加1(11111001)
所以-7的补码是11111001。
已知一个数的补码,求原码的操作分两种情况:
(1)如果补码的符号位为“0”,表示是一个正数,其原码就是补码。
(2)如果补码的符号位为“1”,表示是一个负数,那么求给定的这个补码的补码就是要求的原码。
再举一个例子:求-64的补码
+64:01000000
11000000
为什么byte取值是-128到127
最新推荐文章于 2024-05-08 16:50:06 发布