0%

机器数表示法

简介

针对的是有符号的,即最高位为符号位,0正1负

原码 反码 补码
正整数 最高位为0 同原码 同原码
负整数 最高位为1 非符号位取反 反码+1

负数-X的补码等于+X-1的取反码(即非符号位0变1,1变0);

正整数与负整数相加时,是补码操作,得到的结果中,舍弃溢出位,得到的结果也是补码;

问题与答案

为啥有符号的char可以表示 -128~127即 -2^7 ~ 2^-1范围的数值?

因为最高位为符号位,当最高位为0,可以表示0,1~2712^7-1

当最高位为1,可以表示-1~-127还有-128,因为负数在计算机中是通过补码表示的,所以最小负数的源码为(1111 1111),此时的补码为(1 0000 0000),此时为转换为10进制为128,此时表示为-0;

0的表示

原码 反码 补码
+0 (0)000 0000 (0)000 0000 (0)000 0000
-0 (1)000 0000 (1)111 1111 (1)000 0000