计算机中只能做加法运算,它的减法是通过加法来实现的

原码,反码,补码的产生过程,就是为了解决计算机做减法和引入符号位的问题

真值

正数或负数的真值 → 为其绝对值对应的二进制数前面加上正号或负号
例如 +1,表示为 +00000001,-1 表示为 -00000001;

原码

正数的原码 → 为对应的二进制数,如+1的原码为00000001;
负数的原码 → 为其绝对值对应的二进制数的第一位变为1,如-1的原码为10000001;

0001+0010=0011    (1+2=3)        正数之间的加法 OK
0000+1000=1000    (+0+(-0)=-0) 问题不大
0001+1001=1010    (1+(-1)=-2)  正数与负数相加 NG
1010+1001=0011    (-2+(-1)=3)  负数与负数相加 NG

原码最大的问题就在于一个数加上他的相反数不等于零!
反码的设计思想就是为了解决这一点

反码

正数的反码就是自己
负数的反码就是他的原码除符号位外按位取反

0001+0010=0011        (1+2=3)          正数之间的加法 OK正数与负数相加
0001+1110=1111        (1+(-1)= -0)   OK反   反
0101+1010=1111        (5+(-5)= -0)   OK反   反
0010+1001=1011        (2+(-6)= -4)   OK反   反负数与负数相加
1110+1101=1011          (-1)+(-2)=(-4)  NG
反   反    反
1110+1101=1011          (-1)+(-2)=(-3) OK  但是从原码来看,他其实是-3。巧合吗?
反   反    原1110+1100=1010        (-1)+(-3)=(-5) NG
反   反    反
1110+1100=1010        (-1)+(-3)=(-2) NG 验证了上面确实是巧合
反   反    原

通过原码可以得到 →

  • 正数之间的加法OK
  • 负数加负数只是符号出错而已,数值的绝对值是对的

通过反码可以得到 →

  • 正数与负数相加用反码是可以运算的

补码

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

常见算法:
正数的补码 → 等于其原码
负数的补码 → 等于其反码+1
并不是把反码+1就定义为补码,只不过是补码正好就等于反码加1罢了!!

在补码中也不存在负零了,因为1000表示-8

0001+0010=0011        (1+2=3)        正数之间的加法 OK正数与负数相加
0001+1111=0000        (1+(-1)= 0)   OK补
0101+1011=0000        (5+(-5)= 0)   OK补
0010+1010=1100        (2+(-6)= -4)  OK补   补负数与负数相加
1111+1110=1101          (-1)+(-2)=(-3)  OK
补   补    补1111+1101=1100        (-1)+(-3)=(-4) OK
补   补    补
 0       1       2       3       4       5       6       7       8       9       10      11      12      13      14      15
原码  0000    0001    0010    0011    0100    0101    0110    0111    1000    1001    1010    1011    1100    1101    1110    11110       1       2       3       4       5       6       7       -0      -1      -2      -3      -4      -5      -6      -7反码    0000    0001    0010    0011    0100    0101    0110    0111    1111    1110    1101    1100    1011    1010    1001    1000补码  0000    0001    0010    0011    0100    0101    0110    0111    10000   1111    1110    1101    1100    1011    1010    10010       1       2       3       4       5       6       7       -8      -7      -6      -5      -4      -3      -2      -1

以上参考:
原码,反码,补码杂谈
https://blog.csdn.net/qq_43479628/article/details
https://qb.zuoyebang.com.html
https://blog.csdn.net/Matthew575/article/details/86618990

真值 原码 反码 补码相关推荐

  1. 二进制 真值 原码 反码 补码

    机器数: 一个数在计算机中二进制的表示形式叫机器数,机器数是带符号的 .计算机使用最高位来表示符号位 负数为1 正数为0.假如计算机的字长为8位 那么对于十进制3的机器数表示为0000 0011  , ...

  2. 原码 反码 补码的简单计算附例题

    原码 反码 补码 对计算机中常见数据简单分类 机器数 与 真值 原码 反码 补码 扩展 对计算机常见数据的分类 机器数 就是数值在计算机中的二进制表现形式 机器数在计算机中有符号,使用 最高位表示符号 ...

  3. [例题详解]真值 机器数概念 | 原码 反码 补码 移码 概念及加减计算

    目录 真值和机器数 原码 反码 补码 移码 对比记忆 | 原 反 补 移码 加减法 | 原码 补码 结语 | 大学生学习复习资料 真值和机器数 真值:-5.+10 机器数(带符号数)(= 符号位 [0 ...

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

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

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

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

  6. 大端 小端 原码 反码 补码 及内存中的表现

    小端 和 大端 在内存中存储时,都是从内存的低地址往高地址存,即0x00000000 -> 0xffffffff 以汉字 "严"为例,Unicode码是4E25,需要两个字节 ...

  7. 原码 反码 补码 详解

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

  8. 原码 反码 补码 详解

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

  9. 数制和码制(数制的转换的方法,BCD码<8421,2421,5421,余三码>,格雷码,原码,反码,补码,定点数和浮点数)

    目录 1.数制的转换 1)二,八,十六进制进制转十进制 加权系数求和法 2)十进制转二,八,十六进制 除基取余法(短除法) 减权定位法 3)二,八,十六进制的相互转换 2.BCD码 3.格雷码 4.原 ...

最新文章

  1. pandas中align函数的使用示例
  2. Rust 编程语言极简教程 --- 实例学习
  3. 用gdb搞清楚一道union相关的面试题
  4. 清空文件夹里面的所有文件和文件夹
  5. seafile安装教程 Linux,CentOS7安装seafile开源版
  6. 11个Java 开源 socket框架
  7. 20-10-023-安装-KyLin-2.5.2-单机版安装(MAC)成功
  8. C++---异常处理
  9. 8086-汇编-模块化程序设计
  10. 具体数学-第9课(取整进阶与数论入门)
  11. poj 1695 动态规划
  12. Mysql事务操作及存储引擎
  13. 这些职场道理不懂,你注定一辈子穷打工
  14. 若重新启动ratel,需确定是否还存在僵死进程
  15. 微信小程序正式上线,服务端请求必须HTTPS
  16. 鼠标拖拽盒子跟着鼠标在页面任意位置移动
  17. 软件工程毕业设计课题(26)基于JAVA毕业设计JAVA家政预约系统毕设作品项目
  18. js获取字符串的字节长度
  19. 后端返回有序map,前端却展示无序map
  20. 从美术大家借鉴软件开发

热门文章

  1. android 百度地图h5,【分享】H5 地理信息定位+百度地图
  2. 特斯拉电动卡车Semi和全新Roadster亮相发布会,续航能力均超800公里
  3. 最小生成树:Prim算法 /Kruskal算法(待深入复习理解)
  4. python-pcl可视化
  5. Error: Permission denied (publickey) 的解决方法
  6. 【Postman】 tests常用方法
  7. 在Anaconda3下安装tensorflow-gpu库的经验之谈
  8. 投资日记:12.17-12.20(厦门港务)
  9. SQL优化的魅力!从 30248s 到 0.001s
  10. 2019年TI杯 简易电路特性测试仪 制作过程(6)——测量任务分析(Av、fH) 20/05/01