在说二进制以前,咱们先回想下日常咱们用的最多的十进制,1,0,50,-100,899等等这些数字咱们在熟悉不过了,牵扯到咱们的衣食住行方方面面。组成十进制的数字符号集合为{0,1,2,3,4,5,6,7,8,9}共十个元素。十进制的运算规则为: 1.“满十进一,借一当十” 2.按位权展开,第一位权为10^0, 第二位位权为10^1 ……以此类推,第N位10^(N-1),这也是就是咱们说的位置化数字系统,在数字中符号所占据的位置决定了其表示的值 例如,十进制数字698的位置化表示: 3d
存储到计算机之中的数据都被转换为了二进制形式,可是还有问题须要解决:如何存储数字的符号? 若是不考虑数字的符号,对于n位存储单元,所能存储的范围为[0~2^n-1],例如n=4时,它能表示的范围就是0 ~ 15。 但咱们都知道,数字有正数、负数之分,所以原码表示法规定了,在n位的存储单元中,使用最左1个二进制位表示符号,0表示正,1表示负,其他位置表示数字的绝对值。 例如n=4的存储单元,所能存储的无符号数范围为[0~2^n-1],最左位当作符号位置后,能够仅用剩余3位表示数字的绝对值。 cdn
原码在计算机存储整数中并不经常使用,计算机使用二进制补码来表示n位存储单元中的有符号整数。 反码是由原码转换为补码的中间形式,该运算能够应用到任何整数,不管是正的仍是是负的,进行反码运算时,最左边符号位保持不变,当此数字为负数时,其绝对值位各位求反;正数反码为这个数自己 例如n=4位存储单位中数字3的反码:
blog
几乎全部计算机都使用使用二进制补码来表示n位存储单元中的有符号整数。那么如何得到一个数补码,规则很简单: 正数的补码为其自己; 负数的补码为其反码在加上1获得的结果;图片
例如在4位的存储单位中,-5的补码表示: it
例如在n=4位的存储单元中,还原1 0 1 1所表示的整数: io
因此总结起来,计算机以二进制补码存储正数遵循如下步骤: ①将整数转换为n位的二进数 ②若是整数是正数或零,以其原样存储,若是是负数,计算机取其补码。 而从二进制补码还原为整数,遵循以下步骤: ①若是最左位是1,计算机取其补码。若是是0,不进行任何操做 ②将该整数转换为十进制class
计算机采用二进制补码表示的优势在于加法和减法之间没有区别,当遇到减法运算时,计算机能够简单的把它转变为加法,只须要求为第二个数求二进制的补码便可。这样符号位就能参与运算,下降了计算机逻辑电路复杂度。 例如在n=4位存储单元,计算机计算5-3时,能够按照5+(-3)处理 二进制