ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

反码,补码,原码的概念

2022-09-12 12:02:47  阅读:178  来源: 互联网

标签:反码 符号 补码 负数 正数 原码


  认识二进制,十六进制。会二进制与十进制的相互转化运算。由计算机的硬件决定,任何存储于计算机中的数据,其本质都是以二进制码存储。

  根据冯~诺依曼提出的经典计算机体系结构框架。一台计算机由运算器,控制器,存储器,输入和输出设备组成。其中运算器,只有加法运算器,没有减法运算器。所以,计算机中的没法直接做减法的,它的减法是通过加法来实现的。现实世界中所有的减法也可以当成加法的,减去一个数,可以看作加上这个数的相反数。当然没错,但是前提是要先有负数的概念。这就为什么不得不引入一个该死的符号位。1,而且从硬件的角度上看,只有正数加负数才算减法。2,正数与正数相加,负数与负数相加,其实都可以通过加法器直接相加。.对于一个数, 计算机要使用一定的编码方式进行存储. 原码, 反码, 补码是机器存储一个具体数字的编码方式.原码,反码,补码的产生过程,就是为了解决,计算机做减法和引入符号位(正号和负号)的问题。

1. 原码

是最简单的机器数表示法。用最高位表示符号位,‘1’表示负号,‘0’表示正号。其他位存放该数的二进制的绝对值。

若以带符号位的四位二进值数为例 

  1. 1010 : 最高位为‘1’,表示这是一个负数,其他三位为‘010’,

  2. 即(0*2^2)+(1*2^1)+(0*2^0)=2(‘^’表示幂运算符)

  3. 所以1010表示十进制数(-2)。

原码就是符号位加上真值的绝对值, 即用第一位表示符号, 其余位表示值. 比如如果是8位二进制:

[+1] = 0000 0001

[-1] = 1000 0001

第一位是符号位. 因为第一位是符号位, 所以8位二进制数的取值范围就是:

[1111 1111 , 0111 1111]

[-127 , 127]

原码是人脑最容易理解和计算的表示方式.

但当我们运行以下运算时:

0000+1000=1000 (+0+(-0)=-0) 

0001+1001=1010 (1+(-1)=-2)

我们可以看到其实正数之间的加法通常是不会出错的,因为它就是一个很简单的二进制加法。而正数与负数相加,或负数与负数相加,就要引起莫名其妙的结果,这都是该死的符号位引起的。0分为+0-0也是因他而起。所以原码,虽然直观易懂,易于正值转换。但用来实现加减法的话,运算规则总归是太复杂。原码最大的问题就在于一个数加上他的相反数不等于零。于是反码诞生了。

2,反码:

正数的反码还是等于原码

负数的反码就是他的原码除符号位外,按位取反。

  1. -3的原码是1011,符号位保持不变,低三位(011)按位取反得(100)

  2. 所以-3的反码为1100

但我们在运行两个负数的加法时还是会出现问题,两个正数相加和两个负数相加,其实都是一个加法问题,只是有无符号位罢了。而正数+负数才是真正的减法问题。

3. 补码

补码的表示方法是:

正数的补码就是其本身

负数的补码是在其原码的基础上, 符号位不变, 其余各位取反, 最后+1. (即在反码的基础上+1)

[+1] = [00000001] = [00000001] = [00000001]

[-1] = [10000001] = [11111110] = [11111111]

对于负数, 补码表示方式也是人脑无法直观看出其数值的. 通常也需要转换成原码在计算其数值.

负数的补码等于他的原码自低位向高位,尾数的第一个‘1’及其右边的‘0’保持不变,左边的各位按位取反,符号位不变。

标签:反码,符号,补码,负数,正数,原码
来源: https://www.cnblogs.com/renliqin/p/16685846.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有