天天看点

计算机数据存储——补码原码反码详解

1;引入问题

为什么计算机要采用补码来存储数据 ,而不是源码反码呢?

先介绍源码 反码 与补码的概念以及之间的关系

在这里就拿有符号的8位作为解释。。。。注意8位表示的整数范围是-128至127——这个等下再解释为什么是这样的

源码 就是 由符号位跟数值直接构造的

在源码的表示法中:正数和负数在编码表示上 只有符号位不同 数值部分完全相同

+5 0000 0101

-5 1000 0101

+0 0000 0000

-0 1000 0000

优点:与真值关系直观方便 转换简单 实现乘除简单 ->转化成左右移动逻辑运算 左移n位表示乘以2的n次方

缺点 0的表示不唯一 执行加减法复杂需要先进行判断

现代计算机中不用原码来表示整数 只用定点原码小数表示浮点数尾数部分

若计算机使用原码存储 在计算的时候不进行判断则会出现问题

+1 0000 0001

-1 1000 0001

+1 + -1 = (0000 0001 + 1000 0001) = 1000 0010 = -2 则符号错误 当不同号时要先判断绝对值的大小确定结果正负

反码 :正数的反码是它本身 而负数的反码就是他的数值位 取反

反码在计算机中使用很少 一般都是作为数码转化的中间表示形式

补码 :补码就可以实现加减法的运算统一

正数的补码就是他本身

而负数的补码是他数值位取反加一也可以说成等于模与该负数绝对值的差

介绍一下模,也就是余数

例如时钟 我正向拨动4下是不是等同于反向拨动8下

在计算机中也是如此

0000——1111——(1)0000—舍弃最高位又是一波循环了这就是补码的理念 实现加减法统一也就是这样的

减去这么多和加上那么多是一个性质

-5 1000 0101

补码 1111 1011

相加) 是不是10000000

你再可以例出几个

-1+2 = 【1111 1111】补 + 【0000 0010】= 【10000 0001】 = 0000 0001 为1;

最后说一下补码的优点

补码的0是唯一的 因此多出了以为1000 0000 负数 表示128 这也就是为什么8位表示的范围是-128到127

最后简述一下整数和小数的转化

计算机数据存储——补码原码反码详解

继续阅读