计算机原码反码补码

简介: 又把原码、反码、补码忘了,这里再来分析一下

一.机器数和真值


1.机器数

一个数在计算机中的二进制表示形式,  叫做这个数的机器数。机器数是带符号的,在计算机用一个数的最高位存放符号, 正数为0, 负数为1.

比如,十进制中的数 +3 ,如果计算机字长为4位,转换成二进制就是0011。如果是 -3 ,就是 1011 。

2.真值

二进制对应的真值,就是带上符号的二进制

比如: 3对应的真值是+0011。-3对应的真值是-0011


二.原码

原码就是字节第一位是标志位,0代表正,1代表负,剩下位的真值的绝对值

比如8位字节:1的原码 0000 0001,-1的原码 1000 0001


三.反码

  • 正数反码和原码相同
  • 负数反码是原码除标志位之外,按位取反
  • -1的原码 1000 0001
  • -1的反码 1111 1110


四.补码

  • 正数原码、反码、补码相同
  • 负数补码是反码+1,符号位不变(如果超过了字节长度,会发生溢出)
  • -1的原码 1000 0001
  • -1的反码 1111 1110
  • -1的补码 1111 1111


五.计算使用补码计算,而不使用原码、反码计算

  • 让计算机来辨别符号位,会使基础电路设计的超级复杂,那么人们就开始研究让符号位不参与运算的方法
  • 我们知道 1 - 1 = 1+(-1),只设计加法比较简单,人们开始探索加法,并尝试只保留加法,于是计算机减法就变成了加法。

原码的错误

  • 如果使用原码计算 2 + (-1) = 0000 0010 + 1000 0001 = 1000 0011 = -3.这样会出错
  • 为了解决这个问题,出现了反码
  • 反码运算规则是符号位参与运算。同时符号位如果进位,会加到最低位,是循环进位。比如 11 + 10 = 10 (1是符号位)

image.png

  • 2 + (-1) = (0000 0010 + 1111 1110)反  =  0000 0001 = 1

反码的问题

  • 但是还会出现一个问题 +0 和 -0 的问题 +0 = 0000 000 ,-0 = 1111 1111。对计算机来说一个数字只能对应一个机器数,否则会在运算的时候出现错误。于是为了解决这个错误,出现了补码
  • 补码: 补码的符号位一样可以参与运算,但是符号位进位会略去,不会循环
  • 我们这样设定,0对应的是+0。所以0的编码是0000 0000
  • 那么-0就不能表示0,人们就把-0 ~ - 127 整体向后偏移了1位,变成了 -1 ~ -128.至于怎么偏移,就是补码+1 变成反码。
  • 然后我们可以顺着推,1111 1111 是 -1 。那么-128 就是 1000 000了。
  • 至此解决了+0,-0的问题,而且int8的数据范围多了1个,变成了 -128 ~ 127
  • -128 -1 = 127

image.png

  • 这样,数据范围多了一个,而且又解决了问题,所以现在编程使用的都是反码表。8位字节范围是-128 ~ 127
  • 如果使用原码表或反码表  1111 1111 ~ 0111 1111, 范围是 -127 ~ 127
相关文章
|
芯片
毕业设计 基于51单片机的手机蓝牙控制8位LED灯亮灭设计
毕业设计 基于51单片机的手机蓝牙控制8位LED灯亮灭设计
418 0
|
开发工具 git
如何在 Git 上删除文件?
如何在 Git 上删除文件?
1246 0
|
3月前
阿里云服务器发票开具:抬头设置 + 申请 + 下载全攻略,2026年最新教程
阿里云服务器发票开具全攻略:登录用户中心→设置抬头(个人/企业)→勾选订单申请→下载电子票或收纸质专票。支持增值税普票/专票,税率通常6%(硬件13%)。电子票可报销,纸质专票包邮。详见官方指南。
687 3
|
10月前
|
监控 安全 Shell
管道符在渗透测试与网络安全中的全面应用指南
管道符是渗透测试与网络安全中的关键工具,既可用于高效系统管理,也可能被攻击者利用实施命令注入、权限提升、数据外泄等攻击。本文全面解析管道符的基础原理、实战应用与防御策略,涵盖Windows与Linux系统差异、攻击技术示例及检测手段,帮助安全人员掌握其利用方式与防护措施,提升系统安全性。
428 6
|
监控 安全 Shell
【Shell 命令集合 文件传输 】Linux ftpwho命令使用教程
【Shell 命令集合 文件传输 】Linux ftpwho命令使用教程
202 0
|
7月前
|
机器学习/深度学习 数据挖掘 Python
Mac 安装 Anaconda3-2020.02.dmg 教程(从下载到 conda 可用)
Anaconda是流行的Python数据科学平台,支持数据分析、机器学习等。本文介绍其在Mac上的安装步骤:下载.dmg文件,拖拽安装至应用程序,配置终端环境变量,并通过conda命令或Anaconda Navigator验证安装是否成功。
|
3月前
|
人工智能 运维 Cloud Native
玄晶引擎2.7.8更新全解析:全新UI+Sora接入,云原生场景干货汇总
2026年春节后,阿里云生态原生AI平台玄晶引擎升级至2.7.8版:全界面重构,更清新高效;新增Sora视频生成、AI手机任务详情、“模型大管家”三大核心功能;优化24H合成规则与PC端智能体首页;精准修复三项关键Bug。OEM伙伴需及时同步更新。(239字)
503 2
|
12月前
|
存储 数据采集 数据可视化
Java 大视界 -- 基于 Java 的大数据可视化在城市地下管网管理与风险预警中的应用(275)
本文系统阐述 Java 与大数据可视化技术在城市地下管网管理中的应用,涵盖数据采集、三维建模、风险预警及性能优化,结合真实案例提供可落地的技术方案。
|
人工智能 搜索推荐 vr&ar
虚拟现实如何改变社交互动?技术加持下的全新社交体验
虚拟现实如何改变社交互动?技术加持下的全新社交体验
491 12
鸿蒙NEXT-HMRouter,在使用router后无法跳转问题解决
作者在使用HMRouter搭建鸿蒙三层架构App时,遇到登录页跳转首页后无法继续跳转的问题。经排查发现,错误原因是在onVisibleAreaChange中直接跳转导致页面生命周期冲突。解决方案是将跳转逻辑移至页面生命周期回调如aboutToAppear中执行,从而确保路由状态正常,成功修复Bug。
518 0

热门文章

最新文章