什么是原码、反码、补码?

计算机中的符号数有三种表示方法,即原码、反码和补码。三种表示方法均有符号位和数值位两部分,符号位都是用0表示“正”,用1表示“负”,而数值位,三种表示方法各不相同。

原码:

在数值前直接加一符号位的表示法。
例如-7的原码是10000111

反码:

正数的反码与其原码相同;
负数的反码是对其原码逐位取反,但符号位除外。
例如-7的反码是11111000

补码:

正数和+0的补码是其原码,负数则先计算其反码,然后反码加上1,得到补码

##########################分界线##################################

为什么要提出补码呢?

我查阅了一些材料,得到如下总结:
最原先最简单的是原码,但是因为原码存在一个运算的问题:

十进制 原 码
1 0000 0001
-1 1000 0001
加法结果 1000 0001
十进制结果 -2

这样最基础的运算如果按照计算机逻辑则会出错,即

原码是有符号数的最简单的编码方式,便于输入输出,但作为代码加减运算时较为复杂,故计算机一般不采用这种编码方式存储符号数。

于是提出了反码,但是反码出现了另一个问题:
计算结果会出现1000 0000(-0)这样的存在,于是会出现二进制与十进制的互换不再是一一对应的关系这样的问题,增加计算难度,故也被抛弃。
随后提出了基于反码的-0问题而诞生的补码,专门用来解决-0的问题。
补码换算为原码的过程中,如果补码是正数或者+0的补码,则其原码就是补码本身;如果补码是负数或者-0的补码,则其原码的计算方法是,先将补码减掉1,得到反码,再将反码取反,得到原码。

什么是原码、反码和补码?相关推荐

  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. VC中DDX/DDV自定义
  3. SQLite3的数据类型转载()
  4. Fedora上配置一个安全FTP
  5. 递归法:走楼梯; 旋转数组的最小数字(递归法和改进二分法)
  6. 《循序渐进Oracle:数据库管理、优化与备份恢复》一一第1章 Oracle数据库的创建...
  7. 睡眠排序、面条排序、猴子排序...........................
  8. 笨方法学python3 习题41
  9. 天涯明月刀大地的服务器位置,天涯明月刀东海玉涡位置坐标指南[图]
  10. 编程推荐的好看、护眼字体
  11. Hash冲突解决方法
  12. 硬盘虚拟分区精灵 v2.3 bt
  13. 使用傲腾内存加速的电脑(神舟)安装Ubuntu双系统
  14. IIS 部署.NetCore
  15. speedoffice(PPT)怎么添加图片
  16. 基于 8051单片机的线跟随小车
  17. 计算机装系统找不到硬盘,重装win10系统找不到硬盘完美解决方法
  18. python中if brthon环境安装包_python-模块系列
  19. 第十六章 时间序列数据分析基本概念
  20. 【转载】JVM能够开启多少线程

热门文章

  1. 提高jQuery执行效率
  2. [转载]Android创世纪 - 第二天
  3. 使用celery的backend异步获取结果
  4. 软考计算机网络原理之IP计算问题汇总
  5. Apache的压力测试以及web性能优化的常用知识总结
  6. SDN和SD-WAN有本质区别—Vecloud微云
  7. PON:EPON/GPON/10G PON/XG-PON/NG-PON2—Vecloud微云
  8. 用VLC读取摄像头产生RTSP流,DSS侦听并转发(二)
  9. 如何使scp命令在主机之间复制时不用输入密码
  10. lucene Hello World