0%

二进制数

二进制数

二进制也存在正负之说,使用最高位来表示符号位,1代表负,0代表正把带符号位的机器数对应的真正数值称为机器数的真值

字长是指计算机一次可处理的二进制数的码位长度,64位处理器是指处理器的字长为64位

四种表现形式

二进制数有四种表现形式,为原码、反码、补码和移码,其中反码和补码是为了在二进制中表示负数而产生的

原码:表示二进制本身所代表的形式最高位是符号位,其余低位表示数值的绝对值,如+3原码为00000011,-3原码为10000011,在原码中0有+0和-0之分,符号位不同

反码:正数的反码与原码一样,负数的反码是把其绝对值各位取反(符号位不变)

补码:由于原码中包含有符号位,在进行加减运算时不方便,所以出现了另一种表现形式,补码,正数的补码和原码相同,负数的补码是反码加一(符号位不变)

在补码中会出现第一位是符号位,后边全是0的情况,这种情况表示的不是0或者-0,如1000表示的是-8,+0和-0的补码就是0

移码:这个使用并不多,是把补码的符号位取反

正数的原码、反码、补码三者一样

数据表示范围

码制 定点整数 定点小数 数码个数
原码 -($2^{n-1}$-1) ~ +($2^{n-1}$-1) -(1-$2^{-(n-1)}$) ~ +(1-$2^{-(n-1)}$) $2^n-1$
反码 -($2^{n-1}$-1) ~ +($2^{n-1}$-1) -(1-$2^{-(n-1)}$) ~ +(1-$2^{-(n-1)}$) $2^n-1$
补码 -($2^{n-1}$) ~ +($2^{n-1}$-1) -1 ~ +(1-$2^{-(n-1)}$) $2^n$
移码 -($2^{n-1}$) ~ +($2^{n-1}$-1) -1 ~ +(1-$2^{-(n-1)}$) $2^n$

在移码和补码中,+0和-0的编码是相同的

计算机存储方式

在计算机底层都是以补码的形式存储的,这是为什么呢?

  • 使用补码可以保证数字0的表示统一,由于0既非正数,也非负数,使用原码表示的话符号位难以确定,而使用补码可以解决数字0的存储问题
  • 使用补码可以简化整数的加减法计算,将减法计算视为加法计算,实现减法和加法的完全统一,实现正数和负数加法的统一

欢迎关注我的其它发布渠道