补码是计算机用来表示负数的方式,在有符号运算时才有意义,所以原码应该是有符号位的。本文可以帮助你理解补码与原码间的映射与变换。

第一步:简单表示

  首先:为了简单起见我们取三位二进制数:

二进制:000 001 010 011 100 101 110 111
十进制 :0   1   2   3   4   5   6   7

  可以看到三位二进制数可以表示八个数字,那么分为正数和负数,便只可表示八个数字:

+0 -0 +1 -1 +2 -2 +3 -3

第二步:确定变换映射

  现在想象上述三位二进制数们头尾相接,像钟表一样排列,得到:

二进制:100 101 110 111 000 001 010 011
十进制: 4   5   6   7   0   1   2   3

令0的左边表示负数,现决定映射如下:

 补码 :100 101 110 111 000 001 010 011
十进制: 4   5   6   7   0   1   2   3
表示数:-0  -3  -2  -1   0   1   2   3

采用此映射的原因很好理解:
  为了符合计算机加法运算:式子 -1+1=0用二进制补码表示为111(-1)+1=000(0);
  而像十进制的9+1=0(即10除以10取余)一样:式子3+1=4用二进制补码表示为011(3)+1=100(-0)(即4除以4取余)
  如同1、2、3…8、9、0、1、2…8、9、0…递增形成循环一样,像可以看到补码元素递增也形成循环。

第三步:得到变换规则

根据映射:

 补码 :100 101 110 111 000 001 010 011
十进制: 4   5   6   7   0   1   2   3
表示数:-0  -3  -2  -1   0   1   2   3

  可以发现1开头的均为负数,0开头的均为正数。故令补码第一位为符号位:1负0正

除去符号位后,观察表示数的绝对值和补码形式:

 补码 :00  01  10  11  00  01  10  11
表示数:-0  -3  -2  -1   0   1   2   3
绝对值:00  11  10  01  00  01  10  11

  发现正数的补码(除符号位)和其绝对值的二进制相同,而负数(除符号位)的补码是其绝对值的反码(按位取反)+1。(推导略)

变换规则:

补码->原码:
  符号位为1,则为负数,取出符号位,剩余位取反减一便得到原数绝对值,再与符号位拼接得到原码。如:101符号位为1是负数,除去符号位得到01,取反减1得到11(3),拼上符号位后得到原码为111,值是-3
  符号位为0,则为正数,本身就是原码,如011就是原码。

原码->补码:
  符号位为1,则为负数,取出符号位,剩余位取反加一便得到补码。如:原码101(-1)符号位为1是负数,除去符号位得到01,取反+1得到11,拼上符号位后得到补码为111
  符号位为0,则为正数,本身就是原码,如011就是原码。

计算机补码的简单理解(补码与原码之间的转换)相关推荐

  1. 计算机组成二进制除法,计算机组成原理:3.4.1 定点原码 除法器

    <计算机组成原理:3.4.1 定点原码 除法器>由会员分享,可在线阅读,更多相关<计算机组成原理:3.4.1 定点原码 除法器(28页珍藏版)>请在人人文库网上搜索. 1.计算 ...

  2. 【仓鼠的计算机基础系列】为什么要设计原码、反码和补码

    文章目录 写在前面 1.夭折的三进制 2.计算机如何表示负数 3.计算机如何计算减法 写在前面 大家好,这里是睿智的仓鼠. 在我自学Java的过程中,整理了很多学习笔记,最近在着手开源给大家.如果您发 ...

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

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

  4. bash 将二进制转换为十进制_6、计算机进制之二进制、十进制、十六进制之间的转换...

    1.计算机的数制介绍 数制:计数的方法,指用一组固定的符号和统一的规则来表示数值的方法 数位:指数字符号在一个数中所处的位置 基数:指在某种进位计数制中,数位上所能使用的数字符号的个数 位权:指在某种 ...

  5. 计算机二进制怎么转化成十六进制数是,6、计算机进制之二进制、十进制、十六进制之间的转换...

    1.计算机的数制介绍 数制:计数的方法,指用一组固定的符号和统一的规则来表示数值的方法 数位:指数字符号在一个数中所处的位置 基数:指在某种进位计数制中,数位上所能使用的数字符号的个数 位权:指在某种 ...

  6. 计算机一级二进制转十六进制,计算机进制之二进制、十进制、十六进制之间的转换...

    释放双眼,带上耳机,听听看~! 1.计算机的数制介绍 数制:计数的方法,指用一组固定的符号和统一的规则来表示数值的方法 数位:指数字符号在一个数中所处的位置 基数:指在某种进位计数制中,数位上所能使用 ...

  7. 计算机二进制转化教案及ppt,二进制和十进制之间的转换.ppt

    <二进制和十进制之间的转换.ppt>由会员分享,提供在线免费全文阅读可下载,此文档格式为ppt,更多相关<二进制和十进制之间的转换.ppt>文档请在天天文库搜索. 1.计算机中 ...

  8. 手把手教你写HT1621显示驱动,简单明了,内含原码,方便移植,

    HT1621显示驱动 Author:家有仙妻谢掌柜 Date:2021/1/5 最近用到了HT1621来驱动一个断码屏,写在这里记录自己的成长历程,也分享出去供大家参考! /* 首先声明在本程序中和移 ...

  9. 浮点数存储方式理解,浮点数和整数之间的转换

    目录 一:单精度和双精度浮点数存储格式: 二:浮点数转换成二进制表示 I:整数部分转换二进制的方法: II:小数部分转换二进制的方法: 一:单精度和双精度浮点数存储格式: 按IEEE754标准,32位 ...

最新文章

  1. 针对《评人工智能如何走向新阶段》一文,继续发布国内外的跟贴留言477-486条如下:
  2. mysql prepare原理
  3. VS2013中提示:没有可放置在工具箱上的组件
  4. 燕山大学计算机专业研究生怎么样,求助大家!重庆邮电大学计算机专业的研究生值得一读吗?...
  5. HTML表单基础(掌握)
  6. CocoaPods安装以及遇到的坑
  7. java nio 详_java nio详解
  8. dell服务器t330进入不了系统,Re: 戴尔T330服务器故障
  9. weblogic系列漏洞整理 -- 1. weblogic安装
  10. Beta冲刺-第二天
  11. 组合数递推的计算方法 c语言,组合数公式的递推公式
  12. 有效沟通要解决的三个基本方面
  13. 互联网时代没有囊括进来的流量,在产业互联网时代全部都被囊括进来
  14. 条码标签纸的种类,常见的条码标签纸有哪些?条码标签纸的用途
  15. 直播间实时在线人数方案
  16. Matlab中Web的用法
  17. 河南理工大学 计算机 研究生就业,河南理工大学好就业吗?附河南理工大学就业率最高的专业名单...
  18. 赛博朋克式炼狱:电子垃圾在印度
  19. c语言表示注释,c语言中注释的位置
  20. 欧拉角速度与角速度的关系推导——欧拉运动方程

热门文章

  1. 建设银行职员以电子邮件形式外泄客户信息,非法牟利3万余元
  2. 陌陌5年后重启海外战略:推出陌生人社交产品Olaa
  3. java重定向到某个url_重定向到JavaScript中的URL
  4. python考研参考书目_Python自学日记28——如何选择学习资料
  5. 用Verilog语言对FPGA编程时候的一些错误解决方案
  6. 计算机平面设计必学英语,平面设计必看(国外英语资料).doc
  7. javaWeb——图片验证
  8. String类型长度最多是多少?有限制吗?
  9. 江苏小学计算机面试题目,“幼升小”面试题目被刷屏了......苏州网友颤抖:“我不配上小学!”...
  10. 天池机器训练营学习笔记04