二进制原码、反码、补码、移码

news2024/11/20 14:16:55

  • 机器数:一个数在计算机中的二进制表示形式,称为这个数的机器数。
  • 符号位:机器数是带符号的,在计算机中用最高位作为符号位,0为正数,1为负数。
  • 真值:机器数由于含有符号位,所以机器数的值并不等于真实值。将带符号位的机器数所对应的真实数值称为机器数的真值。
  • 为便于计算,带符号的机器数可采用原码、反码、补码、移码等不同编码方式。
  • 原码:是最简单的机器数表示法,用最高位表示符号,其余位表示该数的二进制绝对值。
  • 反码:正数的反码是其本身,负数的反码是符号位不变,其余位取反。(在反码中,数值0有两种表示方法)(原码最大的问题就在于一个数加上它的相反数不等于0,反码的设计思想就是为了解决这个问题,既然一个负数是一个正数的相反数,那干脆用一个正数按位取反来表示负数)

此时,再试着用反码的方式解决一下源码的问题:0000 0001 + 1111 1110 = 1111 1111,即1+(-1)= -0 结果正确;1111 1110 + 1111 1100 = 1111 1010,(-1)+(-3)= -5,结果错误。两个相反数相加等于0,但是两个负数相加结果不对。

  • 补码:正数的补码是其本身,负数的补码是其反码+1。(这只是求法,并不是补码定义)
  • 移码:不管正负数,只要将其补码的符号位取反即可。
  • 八位二进制数0000 0000 ~ 1111 1111 共2^{8}=256个数,如果无符号整数可表示0~255。如果是有符号整数,第一位二进制位为符号位,其余位为数值域。
  • 在原码中,0的表示有两种(+0)0000 0000和(-0)1000 0000,这样就产生了编码映射的不唯一性,在计算机上就要去区分,然而+0和-0并没有现实意义。
  • 为解决上述数的表示问题,我们强制把转换后的1000 0000认定为-128,但这又出现了一个新的问题,即数的运算
  • 为解决上述数的运算问题,进行如下思考:在数学上,1+(-1)=0,而在二进制中,0000 0001 + 1000 0001=1000 0010,换算成十进制为-2,显然是错了。所以原码符号位不能直接参与运算,必须和其他位分开,但这增加了硬件的开销和复杂性。这个时候就要引入补码。为何引入补码?负数补码定义为何是相应的正数原码取反加一?
  • 为何引入补码?是为了解决计算机中数的表示和数的运算问题,使用补码,可以将符号位和数值域统一处理,即引用了模运算在数理上对符号位的自动处理,利用模的自动丢弃,实现了符号位的自然处理,仅仅通过编码的改变就可以在不更改机器物理架构的基础上完成预期要求。
  • 为何取反加一?模的概念可以帮助理解补数和补码。“模”指的是一个计量系统的计量范围。如时钟的计量范围是0~11,模=12;n位计算机的计量范围是0~2^{n-1},模=2^{n}。“模”实质上是计量器产生“溢出”的量,它的值在计量器上表示不出来,计量器上只能表示出模的余数。任何有模的计量器,均可化减法运算为加法运算。例如:当前时针指向10点,而准确时间是6点,调整时间有以下两种拨法:一种是倒拨4个小时,即10-4=6;另一种是顺拨8小时,即10+8=12+6。在以12为模的系统中,加8和减4的效果是一样的,因此可以化减法运算为加法运算。对“模”而言,8和4互为补数。在以12为模的系统中,11和1,10和2,9和3,7和5, 6和6都有这个特性,共同特点是两者之和等于模。对于计算机而言,其概念和方法完全一样,n位计算机,假设n=8,不讨论符号位,则所能表示最大的数是1111 1111,若再加1,成为10000 0000,但因为只能有8位,最高位1自然丢失。又回到了0000 0000,所以8位二进制系统的模为2^{8}。在这样的系统中,减法运算也可化为加法运算,只需把减数用相应的补数表示就可以,把补数用到计算机对数的处理上,就是补码。
  • 正数的补码表示就是其本身,负数的补码表示的实质是把负数映像到正值区域,因此加上一个负数或减去一个正数,可以用加上另一个数(负数或减数对应的补码)来代替。从补码表示的符号看,补码中符号位的值代表了数的正确符号,0表示正数,1表示负数;而从映像值来看,符号位的值是映像值的一个数位,因此在补码运算中,符号位可以与数值位一起参加运算。
  • 八位二进制数表示范围为-128~+127。

举例:

不考虑符号位:

0110-0010,6-2=4,但是由于计算机中没有减法器,没法算。这时候,想想时钟运算中,减去一个数,是可以等同于加上另外一个正数(同余数),这个数与减数相加正好等于模。也就是四位二进制数最大容量是多少?其实就是2^4=16(10000)。那么-2的同余数,就等于10000-0010=1110,16-2=14。既然如此,0110-0010=0110+1110=10100,6-2=6+14=20。按照这种算法得出的结果是10100,但是对于四位二进制数最大只能存放4位,如果低四位正好是0100,正好是想要的结果,至于最高位的1,计算机会把它放入psw寄存器进位位中,8位机会放在cy中,x86会放在cf中,这里不做讨论。此时,再想想在四位二进制数中,减去2就相当于加上它的同余数(至于它们为什么同余,建议看《计算机组成原理》)。但是减去2,从另一个角度来说,也是加上-2,即加上-2和加上14得到的二进制结果除了进位位,结果是一样的。如果我们把1110的最高位看作符号位后就是-2的补码,这可能也是为什么负数的符号位是1,而不是0。

       

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

参考文献:(强烈推荐第一个引用文献

(5 封私信) 为什么-8对应的原码、补码是1000,反码是1111? - 知乎 (zhihu.com)

《 模拟工程师口袋书》

二进制的原码、反码、补码 - 知乎 (zhihu.com)

八位二进制数能表示数的范围以及原码、反码和补码含义_8位2进制-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1210140.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于群居蜘蛛算法优化概率神经网络PNN的分类预测 - 附代码

基于群居蜘蛛算法优化概率神经网络PNN的分类预测 - 附代码 文章目录 基于群居蜘蛛算法优化概率神经网络PNN的分类预测 - 附代码1.PNN网络概述2.变压器故障诊街系统相关背景2.1 模型建立 3.基于群居蜘蛛优化的PNN网络5.测试结果6.参考文献7.Matlab代码 摘要:针对PNN神…

完整版指南:企业网络中的VXLAN-BGP-EVPN

随着互联网的发展,数据中心的数量和规模呈爆炸性增长趋势。数据中心业务不断增加,用户需求不断提高。随之而来的问题是数据中心的功能变得越来越复杂,运维管理变得越来越困难。VXLAN-BGP-EVPN的出现为企业网络带来了无限的可能性。 什么是VX…

中科驭数荣获北京市科学技术进步奖二等奖

近日,北京市人民政府发布京政发〔2023〕23号公告,2022年度北京市科学技术奖授奖清单揭晓,中国科学院计算技术研究所、北京控制工程研究所、中科驭数(北京)科技有限公司等产学研单位提报的“领域专用处理器关键技术及应…

竞赛 题目:基于LSTM的预测算法 - 股票预测 天气预测 房价预测

文章目录 0 简介1 基于 Keras 用 LSTM 网络做时间序列预测2 长短记忆网络3 LSTM 网络结构和原理3.1 LSTM核心思想3.2 遗忘门3.3 输入门3.4 输出门 4 基于LSTM的天气预测4.1 数据集4.2 预测示例 5 基于LSTM的股票价格预测5.1 数据集5.2 实现代码 6 lstm 预测航空旅客数目数据集预…

Linux 关闭对应端口号进程

查看当前的端口号是否在运行 找出端口号端口号进程 netstat -anp | grep 9000 关闭端口号 kill -9 [PID]

SAP ABAP 主动调用外部系统的REST接口(x-www-form-urlencoded)

如何在SAP ECC中调用外部系统提供的REST接口地址? Postman中使用Body中参数情况,使用链接的情况 x-www-form-urlencoded POST成功调用样例如下: SAP中实现如下: 1. 事务码STRUST,导入对方系统证书 2. 事务码SM59配置destinati…

hadoop 大数据集群环境配置 配置hadoop配置文件 hadoop(七)

1. 虚拟机的三台机器分别以hdfs 存储, mapreduce计算,yarn调度三个方面进行集群配置 hadoop 版本3.3.4 官网:Hadoop – Apache Hadoop 3.3.6 jdk 1.8 三台机器尾号为:22, 23, 24。(没有用hadoop102, 103,10…

【kafka】windows安装启动

1.zookeeper的安装与启动 快速打开window powershell: windowx,选 2.kafka下载 —注意kafka和zookeeper需要版本匹配 安装路径 注意,kafka安装目录不能有空格。文件下载到: D:\Program_Files\kafka_2.12-3.6.0新建logs文件 修改c…

232.用栈实现队列(LeetCode)

思路 思路:利用两个栈实现队列先进先出的特性,先将元素导入一个栈内 模拟出队时,则将所有元素导入另一个栈内,此时元素顺序被反转过来,只需要取栈顶数据即可 那我们就可以将两个栈的功能分开,一个专门入pus…

verdi merge fsdb出现信号冲突的解决办法

前段时间介绍了verdi用 Edit Virtual File的方式把几个fsdb文件merge起来的方法 由于当时实验的时候只用了两个小的fsdb文件,每个fsdb文件中包含的信号量也比较少,所以并没有发现问题 我是用 Edit Virtual FIle把dump不同hier的fsdb文件merge到一起&am…

影响因子10月修正!多本期刊上涨,最高IF达54.8!

【SciencePub学术】 每年的影响因子基本都在6月底发布,但是由于数据不全等原因,部分期刊未能及时获得影响因子,或者影响因子有一定误差。因此,每年科睿唯安还会在10或11月份对当年的影响因子进行更新,主要包括补录和修…

驾驭数据与人工智能是人才培养的时代命题

2023年11月11日全国近千名计算机教育工作者共聚“海南博鳌亚洲论坛大酒店”,以“产教融合,供需共赢”为主题,“服务国家创新驱动发展,顺应全球新一轮科技革命和产业变革的趋势,培养集学科、技术和产业需求相融合的IT新…

Java封装一个根据指定的字段来获取子集的工具类

工具类 ZhLambdaUtils SuppressWarnings("all") public class ZhLambdaUtils {/*** METHOD_NAME*/private static final String METHOD_NAME "writeReplace";/*** 获取到lambda参数的方法名称** param <T> parameter* param function functi…

RK3588平台开发系列讲解(项目篇)实时显示摄像头

文章目录 一、测试代码二、代码解析2.1、OpenCV头文件2.2、类与函数的访问方式2.3、捕获摄像头图像2.4、定义图像变量2.5、显示图像沉淀、分享、成长,让自己和他人都能有所收获!😄 📢 本篇将给大家介绍,如何基于USB摄像头进行实时显示。 一、测试代码 #include "o…

vue离线地图(瓦片)

最近公司要弄一个这样的离线地图&#xff0c;要求在图上打点画线之类的。折腾了几天&#xff0c;学习了三种方式&#xff1a; 1.拿到各省市区的经纬度json&#xff0c;通过echarts来制作&#xff0c;再套一个卫星图的地图背景 2.下载地图瓦片&#xff0c;再通过百度/高德的离线…

文章发表 | 求臻医学发布精准肿瘤学临床试验预筛选平台

近日&#xff0c;求臻医学信息与人工智能团队研发的精准肿瘤学临床试验预筛选平台OncoCTMiner&#xff0c;在线发表于国际期刊Database: The Journal of Biological Databases and Curation (IF5.8)。OncoCTMiner集成自然语言处理&#xff08;NLP&#xff09;和大型语言模型&am…

caspp attacker lab

attacker lab phase2 advice phase 1 ctarget 会先调用test , test调用getbuf, getbuf调用Get。 任务目的是通过缓冲区注入攻击&#xff0c;将函数getbuf返回直接重定向到函数touch1。 0x28 是 40 比特&#xff0c; gdb ./ctarget getbuf 下一次执行的指令是401976, rsp对…

【Python】上市公司数据进行经典OLS回归实操

一、题目二、数据合并、清洗、描述性统计1、数据获取2、数据合并3、选择董监高薪酬作为解释变量的理论逻辑分析 三、多元回归模型的参数估计、结果展示与分析1、描述性统计分析2、剔除金融类上市公司3、对所有变量进行1%缩尾处理4、0-1标准化&#xff0c;所有解释变量5、绘制热…

计算机毕设 机器学习股票大数据量化分析与预测系统 - python 计算机毕设

文章目录 0 前言1 课题背景2 实现效果UI界面设计web预测界面RSRS选股界面 3 软件架构4 工具介绍Flask框架MySQL数据库LSTM 5 最后 0 前言 &#x1f525; 这两年开始毕业设计和毕业答辩的要求和难度不断提升&#xff0c;传统的毕设题目缺少创新和亮点&#xff0c;往往达不到毕业…

【数据结构】树与二叉树(十六):二叉树的基础操作:插入结点(算法Insert)

文章目录 5.2.1 二叉树二叉树性质引理5.1&#xff1a;二叉树中层数为i的结点至多有 2 i 2^i 2i个&#xff0c;其中 i ≥ 0 i \geq 0 i≥0。引理5.2&#xff1a;高度为k的二叉树中至多有 2 k 1 − 1 2^{k1}-1 2k1−1个结点&#xff0c;其中 k ≥ 0 k \geq 0 k≥0。引理5.3&…