原码、反码及补码

        首先,因为人脑可以知道第一位是符号位,在计算的时候我们会根据符号位,选择对真值区域的加减.但是对于计算机,加减乘数已经是最基础的运算,要设计的尽量简单,计算机辨别“符号位”显然会让计算机的基础电路设计变得十分复杂!于是人们想出了将符号位也参与运算的方法,我们知道,根据运算法则减去一个正数等于加上一个负数,即1-1=1+(-1)=0,所以机器可以只有加法而没有减法,这样计算机运算的设计就更简单了。
       于是人们为了将符号位参与运算,并且只保留加法,从而简化计算机运算,发明了原码、反码和补码。
原码、反码、补码都是有符号的用二进制表示数的方法,均由符号位和数值位构成。
1.原码:原码是符号位加上真值的绝对值,即用第一位表示符号,其余位表示值,比如如果是8位二进制。[+1]原=0000 0001 [-1]原=1000 0001
第一位是符号位,余下七位是整数值。所以8位二进制的取值范围就是[1111 1111,0111 1111] 即[-127,+127](其中0有两种表示方法,00000000和10000000,即+0和-0。 )
2.反码
正数的反码是其本身
负数的反码是在其原码的基础上,符号位不变,其余各个位取反
[+1]=[00000001]原=[00000001]反
[-1]=[10000001]原=[11111110]反
3.补码
正数的补码就是其本身
负数的补码是在其原码的基础上,符号位不变,其余各数取反,最后+1(在反码的基础上+1)
[+1]=[00000001]原=[00000001]反=[00000001]补

[-1]=[10000001]原=[11111110]反=[11111111]补

对于负数,补码表示方式是人脑无法直观看出其数值的,通常也需要转换成原码再计算其值。
在计算机系统中数值一律用补码来表示(存储)。主要原因:因为CPU只能做加法运算使,用补码,可以将符号位和其它位统一处理;同时,减法也可以按加法来处理。另外,两个补码表示的数相加时,如果是最高位(符号位)有进位,则进位被舍弃;补码与原码的转换过程几乎是相同的。
进位被舍弃:比如+1 +(-1)=0 0000 0000 第九位0被舍去

转载于:https://www.cnblogs.com/yingjiyu/p/11255125.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值