原码、反码与补码及其意义

(1)数值数据的表示 
我们把一个数在计算机内被表示的二进制形式称为机器数,该数称为这个机器数的真值。机器数有固定的位数,具体是多少位与机器有关,通常是8位或16位。机器数把真值的符号数字化,通常用最高位表示符号,0表示正,1表示负。例如,假设机器数为8位,最高位是符号位,那么在定点整数的情况下,00101110和10010011的真值分别为十进制数+46和-19。 
(2)原码: 
一个整数的原码是指:符号位用0或1表示,0表示正,1表示负,数值部分就是该整数的绝对值的二进制表示。 
例如:假设机器数的位数是8,那么:[+17]原=00010001 [-39]原=10100111
值得注意的是,由于 所以数0的原码不唯一,有“正零”和“负零”之分。 
(2)反码 
在反码的表示中,正数的表示方法与原码相同;负数的反码是把其原码除符号位以外的各位取反(即0变1,1变0)。通常,用[X]反表示X的反码。例如: 
[+45]反 = [+45]原 = 00101101
[-32]原 = 10100000
[-32]反 = 11011111
(3)补码 
在补码的表示中,正数的表示方法与原码相同;负数的补码在其反码的最低有效位上加1。通常用[X]补表示X的补码。例如: 
[+14]补 = 10100100
[-36]反 = 11011011
[-36]补 = 11011100
注意:数0的补码的表示是唯一的,即[0]补=[+0]补=[-0]补=00000000
现在我们来看看引进原码、反码与补码这几个概念到底有什么意义。先看下面的例子。例如:X = 52,Y = 38,求X – Y的值。 
[X]补 = 00110100 
[-Y]原 = 10100110
[-Y]反 = 11011001
[-Y]补 = 11011010 
现在我们看看[X]补 + [-Y]补 等于多少? 
[52]补:   0 0 1 1 0 1 0 0
[-38]补:+) 1 1 0 1 1 0 1 0 
      1 0 0 0 0 1 1 1 0

自然丢失 
我们可以看到,最高位丢失后,结果(14)正是52-38的值。从这里我们不难体会到通过补码可以把减法运算变成加法运算来做。这样做有什么意义呢?实事求是地说,引入补码意义非同寻常,可以说是先辈们智慧的结晶。因为, 通过补码运算,可以把减法运算变成加法运算;而乘法可以用加法来做,除法可以转变成减法。这样一来,加、减、乘、除四种运算“九九归一”了。这对简化CPU的设计非常有意义,CPU里面只要有一个加法器就可以做算术运算了。

原码、反码与补码及其意义相关推荐

  1. java用的原码还是反码_java 原码 反码 和补码

    --------- 原码.补码.反码 计算机是数字电路设备,由复杂的电子元器件组合而成,一个电子元器件在工作时,可以分为两种状态--高电平和低电平,表示数据用高电平表示1,低电平表示0,而多个电子元器 ...

  2. c语言 原码反码和补码

    计算机系统使用的基本上是二进制系统,数据在计算机中主要是以补码的形式存储的. 原码 一个数的原码(原始的二进制码)有如下特点: 1.最高位做为符号位,0表示正,为1表示负 2.其它数值部分就是数值本身 ...

  3. 计算机原码 反码 和 补码

    一.机器数和真值 1. 机器数 一个数在计算机中的二进制表示,叫做这个数的机器数.在计算机中最高位为符号位.0代表正数,1代表负数. +1 机器数(8位):0000 0001 -1 机器数(8位):1 ...

  4. 计算机真值范围,计算机的机器数,真值,原码, 反码和补码

    机器数 一.数的符号数值化.实用的数据有正数和负数,由于计算机内部的硬件只能表示两种物理状态(用0和1表示),因此实用数据的正号"+"或负号"-",在机器里就用 ...

  5. 原码反码和补码,一篇就够了,全网最详细解析

    其实对于计算机来说,并不存在原码和反码,计算机存储的二进制数据都是以补码的形式存放的,自然对数据的运算也是直接用补码来运算(计算机中只有加法器没有减法器) 我们都知道正整数(包括0)的补码是它本身,负 ...

  6. 负数的原码反码和补码

    As we all know,正数的三码都一样,注意一下最高位为符号位即可: 负数的原码最高位为1,与真值之间换算方便,但对于做减法的操作却很无力,于是引进了反码和补码:负数的反码为它的正数按位取反, ...

  7. 关于计算机中 原码, 反码, 补码 详解

    本篇文章讲解了计算机的原码, 反码和补码. 并且进行了深入探求了为何要使用反码和补码, 以及更进一步的论证了为何可以用反码, 补码的加法计算原码的减法. 论证部分如有不对的地方请各位牛人帮忙指正! 希 ...

  8. 原码, 反码, 补码, 移码 详解

    本篇文章讲解了计算机的原码, 反码和补码. 并且进行了深入探求了为何要使用反码和补码, 以及更进一步的论证了为何可以用反码, 补码的加法计算原码的减法. 论证部分如有不对的地方请各位牛人帮忙指正! 希 ...

  9. 原码 反码 补码 详解

    一. 机器数和真值 在学习原码, 反码和补码之前, 需要先了解机器数和真值的概念. 1.机器数 一个数在计算机中的二进制表示形式,  叫做这个数的机器数.机器数是带符号的,在计算机用一个数的最高位存放 ...

  10. 原码 反码 补码 详解

    本篇文章讲解了计算机的原码, 反码和补码. 并且进行了深入探求了为何要使用反码和补码, 以及更进一步的论证了为何可以用反码, 补码的加法计算原码的减法. 论证部分如有不对的地方请各位牛人帮忙指正! 希 ...

最新文章

  1. 转:秒杀系统架构分析与实战
  2. 废掉一个程序员最好的方法,让他忙碌着,忙碌到没时间思考
  3. 趣图:好好干,今天再加个班
  4. 面向对象课程第二单元作业总结
  5. java xml 验证工具_验证xml格式
  6. (论坛答疑点滴)DataGrid的EditCommandColumn如何使用图片作为按钮?
  7. Python的重要模块:collections (namedtuple、defaultdict、deque、Counter、OrderedDict、ChainMap)
  8. unity3d 可视化编程_R编程系列:R中的3D可视化
  9. 图像识别(3)---验证码篇
  10. HDU 3586 Information Disturbing (树形DP,二分)
  11. htaccess 是什么
  12. eclipse中birt插件使用_eclipse安装birt插件
  13. 情感分析[深度学习/机器学习]专业英语词汇分享
  14. 使用C语言--判断素数的两种方法
  15. asp网站本地测试服务器,小旋风asp服务器,asp本地环境调试必备
  16. ‘mvn‘不是内部或外部命令
  17. matlab中inf怎么判断,MATLAB中Inf或inf表示()、NaN或nan表示()、nargout表示()。
  18. 蓝牙HCI command/event/acl/sco格式介绍
  19. 【JavaScript 逆向】极验四代无感验证码逆向分析
  20. 使用简单的逻辑方法进行独立思考

热门文章

  1. 用Zebra打印机制作一个节日贺卡
  2. optics hecht pdf 5_干货分享:这些PDF文件压缩工具都是你不容错过的!
  3. 我很喜欢研究这些比较酷的效果
  4. 计算机动画的处理及应用教案,电脑动画制作教案(2篇)
  5. idea中搭建基于maven的ssm整合框架
  6. Day 01-创建 Vue3.0 工程
  7. Gradle的卖家秀和买家秀
  8. 泛函分析简列:度量空间之Banach空间与模等价
  9. 打豆豆游戏c语言编程,C语言程序打豆豆(函数版)分享!
  10. 色彩敏感度测试 l 据说只有1%的设计师能全对,不服来战!