例如:补码转负整数
已知内存中以补码形式存放的二进制数:11111010 ,要求求出其十进制数。
求:11111010 的反码 补码:11111010 反码:00000101 根据反码转换成十进制数:00000101=1*2^0 + 0*2^1 + 1*2^2 = 5 因为只有负数才可以以补码形式存在所以要在 5 前面加 - 号: -5 让所得负数减1:-5-1= -6
答案:11111010 求出的负整数是:-6
无符号整数的存放形式
用两个字符来存放一个无符号数时,就不存在符号位了,16个二进制位 全部用来存放二进制数值,这时16个二进制全部是:1111111111111111 表示了2字节的二进制位,可以存放的最大整数 65535 (无符号不存在负数)
有符号 -1 的二进制表示形式是:16个 1 ,表示了最大负数。 无符号 65535 的二进制表示形式也是 16个1 所以 有符号的最大负数 -1 和 无符号的最大存放数 65535 存储方式相同。
小结: 负整数求补码步骤: 第一步:先求将其转换成二进制。 第二步:将其二进制反码。 第三步:将反码再补码。(就是在末位 + 1) 第四步:得出该负数的,补码。
补码求负整数步骤: 第一步:将补码反码 第二步:将反码转换成十进制数,后再加符号,将其变成负数。 第三步:将其负数再减去 -1 (因为负整数 反码转换成补码过程中需要加 1 ,所以在此要 -1)
Ps:16位最大有符号负数是:1111111111111111 等同于10进制 -1 16位最小有符号负数是:100000000000000 等同于10进制 -32768 16位最大无符号数是:1111111111111111 等同于10进制 65535 16位最小无符号数是:000000000000000 等同于10进制 0 |