笔者在英文资料中见到1’s Complement Code和2’s Complement Code乍一看直译都是补码,按补码理解又搞的一头雾水,其实他们是有区别的。这篇文章帮你彻底理解什么是1’s Complement Code和2’s Complement Code

True Form:原码,是一种计算机中对数字的二进制定点表示方法。原码表示法在数值前面增加了一位符号位(即最高位为符号位):正数该位为0,负数该位为1(0有两种表示:+0和-0),其余位表示数值的大小。为了便于ALU进行运算,又发展出反码、补码等转换过的码。特别的:正数的原码 = 反码 = 补码。引进补码的作用是为了让计算机更方便做减法。
补充: 二进制数的运算方法

Complement Code 的形式有2种:

  • 1's Complement Code 1的补码:常翻译为 反码。
    多用在IP、TCP的checksum校验和中。
    计算方法:
    - 正数的反码与原码相同
    - 负数的反码是在其原码的基础上, 符号位不变,其余各个位取反
  • 2's Complement Code 2的补码:常翻译为 补码/二补码。
    平时在计算机科学中学习的补码是2的补码,它最大的好处在于使得所有的加减法运算可以用同一种电路完成,即将 a - b转化为a + (-b),具体的解释、证明请参阅 关于2的补码。
    计算方法:
    - 正数的补码和原码相同
    - 负数的反码是在其原码的基础上, 符号位不变,其余各个位取反再加1。

以-9(= 0b1000 1001)和 9(= 0b0000 1001)为例:

十进制表示 -9 9
Sign-Magnitude 原码 1000 1001 0000 1001
1’s Complement Code 反码 1111 0110 0000 1001
2’s Complement Code 补码 1111 0111 0000 1001

另:补码的最高有效位(MSB: Most Significant Bit)是符号位(Sign Bit),0代表正数,1代表负数,例如:对于一个4位的补码来说:0111是1(=0b0001)的补码,而1001则是-7(=0b1111)的补码

拓展阅读:
1的补码vs 2的补码
关于补码的由来和作用
二进制的原码、反码、补码

什么是原码,1’s Complement Code反码和2’s Complement Code补码相关推荐

  1. java反码补码原码作用_java原码补码反码关系解析

    本文为大家解析了java原码补码反码的关系,供大家参考,具体内容如下 原码:不管源数据是十进制还是十六进制,统统将数字转成二进制形式 反码:把原码的二进制统统反过来,0变成1,1变成0 补码:负数的反 ...

  2. 原码、补码以及定点数运算

    1 进制相互转换 1.1 十进制转换二进制 十进制数转换为二进制数时,由于整数和小数的转换方法不同,所以先将十进制数的整数部分和小数部分分别转换后,再加以合并. 1.1.1 整数部分          ...

  3. 二进制的原码,反码,补码

    1.任何数都是以二进制的补码存储: 2.正数的原码,反码,补码都是一样的: 3.负数的原码是正数的原码,符号为为1:反码是原码符号位不变其它位取反,补码是反码加1: 示例: -13原码:1000 11 ...

  4. java部分基础知识 (二):计算机组成原理 原码 补码 反码 按位符 移位符 按位与 按位或 按位抑或 非 分析hashMap的put方法原理

    这里写目录标题 引言 符号位 正数的二进制计算 负数的二进制计算 按位符和移位符 按位符 移位符 分析hashMap运算符 byte和char 总结 引言 最近做完一个项目后,我忽然发现自己的基础并不 ...

  5. Verilog基础知识(数值表示总结,signed,原码,反码,补码)

    以前虽然是用过verilog,但是只使用了其中最常见wire,reg类型数据,并且是无符号的,因为是及处理过程很多数据就是无符号的.但是想进一步拓展无符号数,或者其底层的补码形式存储与运算方式,就需要 ...

  6. 原码 反码 换算工具 补码_原码,反码,补码相互转换在线计算器_三贝计算网_23bei.com...

    本计算软件适用于10进制.16进制.2进制数值原码.反码.补码的计算. 输入已知数据变量.选择已知变量的类型(支持原码(10进制).原码(16进制).原码(2进制).反码(2进制).反码(16进制). ...

  7. 计算机网络中的原码、反码、补码

    写在前面 原码.反码.补码是计算机组成原理中的概念,是计算机网络的基础知识之一.这些概念是为了处理二进制数的符号位而引入的,常用于计算机中的整数运算,也常用于数据存储和传输等领域.因此,了解和掌握这些 ...

  8. 关于计算机中二进制原码,反码,补码的简要解释

    原码,补码,反码的概念 正数原码:正数的原码为取绝对值的数转二进制,5的原码为   00000000   00000000   00000000    00000101 负数原码:负数的原码为取绝对值 ...

  9. 6位有符号补码阵列乘法器_C/C++学习日记:原码、反码和补码

    一.什么是原码.反码和补码 我们知道,在计算机内部存储的带符号数都是以补码形式存储,用补码形式进行运算的.什么是一个数的补码?为什么要用补码?这要从数的原码.反码开始讲.我们以整型数为例,且假定字长为 ...

  10. 原码,反码,补码,移码的概念以及各自的用途和优点

    1.原码 将最高位用作符号位(0表示正数,1表示负数),其余各位代表数值本身的绝对值的表示形式. 例如,假设用8位表示一个数,则+10的原码是00001010,-10的原码是10001010. 直接使 ...

最新文章

  1. 卷学历、卷加班……程序员拥有什么能力才能破局内卷?
  2. 云计算的下一站:Serverless的2020发展前瞻!
  3. Ubuntu安装scipy,numpy,pylab
  4. java中 a_java中 a++ 和 ++a
  5. URAL 1146 Maximum Sum(最大子矩阵的和 DP)
  6. 【HDU - 1025】Constructing Roads In JGShining's Kingdom(dp最长上升子序列模型 + 二分优化)
  7. 背景提取算法——帧间差分法、背景差分法、ViBe算法、ViBe+算法
  8. 写字板能用html语言吗,JS+HTML5 Canvas实现简单的写字板功能示例
  9. 孙正义再造“阿里巴巴”
  10. java gdal生成彩色tiff文件 并压缩大小
  11. fiddler连接代理手机无法上网问题解决办法
  12. [ CSS-CSS3 ] 更适合你的CSS样式一览表
  13. 【科创人】DCloud崔红保:uni-app和HBuilder背后的男人,让天下没有难做的开发
  14. 用python写一个自动注册脚本_js自己写脚本自动操作注册插件基于chrome浏览器
  15. 背光的工作原理及结构
  16. 美式与英式英语音标的区别
  17. 【生活记录】[2020年]上海居转户流程
  18. webview 清除缓存的方式
  19. 雷电模拟器启动报错:opengl版本过低
  20. 题解 P5022 【旅行】

热门文章

  1. 手机通话记录重复显示怎么处理_华为出现重复联系人 - 卡饭网
  2. 08 干系人管理ITO
  3. [转载]this 指向详细解析(箭头函数)
  4. Spring集成activiti
  5. 概念模型向逻辑模型的转换规则
  6. 500行代码,教你用python写个微信飞机大战
  7. CESM笔记——修改输出数据频率(增加逐日数据输出)
  8. 关于调用360极速浏览器 2345浏览器的方法
  9. 爱荷华州立大学计算机科学,2019上海软科世界一流学科排名计算机科学与工程专业排名爱荷华州立大学排名第301-400...
  10. 2020年个人所得税计算方法(附带计算器)