计组——定点数原码反码补码移码以及它们之间的转换

article/2025/10/1 10:49:26

在这里插入图片描述

在这里插入图片描述

原码

用尾数表示真值的绝对值,符号位“0/1”对应“正/负”
在这里插入图片描述
若机器字长n+1位,原码整数的表示范围: − ( 2 n − 1 ) ≤ x ≤ 2 n − 1 {\color{Red} -(2^{n}-1)\leq x\leq 2^{n}-1} (2n1)x2n1(关于原点对称)
真值0有 + 0 {\color{Red} +0} +0 − 0 {\color{Red} -0} 0 两种形式
在这里插入图片描述
若机器字长 n+1 位,原码小数的表示范围: − ( 1 − 2 − n ) ≤ x ≤ 1 − 2 − n {\color{Red} -(1-2^{-n})\leq x\leq 1-2^{-n}} (12n)x12n(关于原点对称)

真值0有 + 0 {\color{Red} +0} +0 − 0 {\color{Red} -0} 0 两种形式

反码

若符号位为0,则反码与原码相同
若符号位为1,则数值位全部取反

若机器字长 n+1 位,反码整数的表示范围: − ( 2 n − 1 ) ≤ x ≤ 2 n − 1 {\color{Red} -(2^{n}-1)\leq x\leq 2^{n}-1} (2n1)x2n1(关于原点对称)
若机器字长 n+1 位,反码小数的表示范围: − ( 1 − 2 − n ) ≤ x ≤ 1 − 2 − n {\color{Red} -(1-2^{-n})\leq x\leq 1-2^{-n}} (12n)x12n(关于原点对称)

真值0有 + 0 {\color{Red} +0} +0 − 0 {\color{Red} -0} 0 两种形式
[ + 0 ] 原 = 0 , 0000000 [+0]_{原}=0,0000000 [+0]=0,0000000 [ − 0 ] 原 = 1 , 0000000 [-0]_{原}=1,0000000 [0]=1,0000000
[ + 0 ] 反 = 0 , 0000000 [+0]_{反}=0,0000000 [+0]=0,0000000 [ − 0 ] 反 = 1 , 1111111 [-0]_{反}=1,1111111 [0]=1,1111111

补码

正数的补码=原码
负数的补码=反码末尾+1(要考虑进位)

若机器字长 n+1 位,补码整数的表示范围: − 2 n ≤ x ≤ 2 n − 1 {\color{Red} -2^{n}\leq x\leq 2^n-1} 2nx2n1(比原码多表示一个负数 − 2 n {\color{Red}-2^{n}} 2n
若机器字长 n+1 位,补码小数的表示范围: − 1 ≤ x ≤ 1 − 2 − n {\color{Red} -1\leq x\leq 1-2^{-n}} 1x12n(比原码多表示一个 − 1 {\color{Red}-1} 1

补码的作用:让减法操作转变为等价的加法操作,节省硬件成本,ALU中无需集成减法器,执行加减法时,符号位一起参与运算

注意:补码的真值0只有一种表示形式

定点整数补码 [ x ] 补 = 1 , 0000000 [x]_{补}=1,0000000 [x]=1,0000000 表示 x = − 2 7 {\color{Red} x=-2^{7}} x=27

整数的原码和补码之间的相互转换都是数值位取反,末尾加1

定点小数补码 [ x ] 补 = 1 , 0000000 [x]_{补}=1,0000000 [x]=1,0000000 表示 x = − 1 {\color{Red} x=-1} x=1

小数的原码和补码之间的相互转换都是尾数取反,末尾加1

移码

在补码的基础上将符号位取反。注意:移码只能用于表示整数
移码的计算:移码=真值+偏置值

比如8位移码的偏置值=1000 0000B,即就是 2 n − 1 2^{n-1} 2n1
——————
-127
原码=1111 1111B
真值=-111 1111
移码=-111 1111B+1000 0000=0000 0001
——————
+127
原码=0111 1111B
真值=0111 1111
移码=0111 1111+1000 0000=1111 1111

移码的真值0只有一种表示形式: [ + 0 ] 移 = [ − 0 ] 移 = 1 , 0000000 [+0]_{移}=[-0]_{移}=1,0000000 [+0]=[0]=1,0000000
若机器字长 n+1 位,移码整数的表示范围: − 2 n ≤ x ≤ 2 n − 1 {\color{Red} -2^{n}\leq x\leq 2^n-1} 2nx2n1(与补码相同)

移码的作用:移码很方便的用计算机硬件判断两个整数的大小
之后的浮点数的相关运算中会大量使用到移码

练习

  1. 定点整数x=50,用8位原码、反码、补码、移码表示
32168421
110010

前面补0,凑足8位,其中第一位为符号位
[ x ] 原 = [ x ] 反 = [ x ] 补 = 0 0110010 [x]_{原}=[x]_{反}=[x]_{补}={\color{Red} 0}0110010 [x]=[x]=[x]=00110010
[ x ] 移 = 1 0110010 [x]_{移}={\color{Red} 1}0110010 [x]=10110010 (补码的符号位由1变为0)

  1. 定点整数x=-100,用8位原码、反码、补码、移码表示

在这里插入图片描述

【解析】
[ x ] 原 = 1 1100100 [x]_{原}={\color{Red} 1}1100100 [x]=11100100
[ x ] 反 = 1 0011011 [x]_{反}={\color{Red} 1}0011011 [x]=10011011(原码数值位取反)
[ x ] 补 = 1 0011100 [x]_{补}={\color{Red} 1}0011100 [x]=10011100(补码数值位加1)
[ x ] 移 = 0 0011100 [x]_{移}={\color{Red} 0}0011100 [x]=00011100(补码的符号位由1变为0)

  1. 求下列各种码对应的真值
    [ x ] 原 = 1 0001101 [x]_{原}={\color{Red} 1}0001101 [x]=10001101 【-(1+4+8)=-13】
    [ x ] 反 = 1 0001101 [x]_{反}={\color{Red} 1}0001101 [x]=10001101 [ x ] 原 = 1 1110010 [x]_{原}={\color{Red} 1}1110010 [x]=11110010,-(2+16+32+64)=-114】
    [ x ] 补 = 1 0001101 [x]_{补}={\color{Red} 1}0001101 [x]=10001101 [ x ] 原 = 1 1110011 [x]_{原}={\color{Red} 1}1110011 [x]=11110011, -115】
    [ x ] 移 = 1 0001101 [x]_{移}={\color{Red} 1}0001101 [x]=10001101 [ x ] 补 = 0 00001101 [x]_{补}={\color{Red} 0}00001101 [x]=000001101= [ x ] 原 [x]_{原} [x](正数的原码等于补码), +13】
    【解析】
    [ x ] 原 = 0 0001101 [x]_{原}={\color{Red} 0}0001101 [x]=00001101 【+(1+4+8)=+13】
    [ x ] 反 = 0 0001101 [x]_{反}={\color{Red} 0}0001101 [x]=00001101 【+13】
    [ x ] 补 = 0 0001101 [x]_{补}={\color{Red} 0}0001101 [x]=00001101 【+13】
    [ x ] 移 = 0 0001101 [x]_{移}={\color{Red} 0}0001101 [x]=00001101 [ x ] 补 = 1 0001101 [x]_{补}={\color{Red} 1}0001101 [x]=10001101 [ x ] 原 = 1 1110011 [x]_{原}={\color{Red} 1}1110011 [x]=11110011, -(1+2+16+32+64)=-115】

补充:由 [ x ] 补 [x]_{补} [x]快速求 [ − x ] 补 [-x]_{补} [x]的方法

符号位、数值位全部取反,末位+1

总结

在这里插入图片描述
原码和反码的真值0有两种表示;
补码和移码的真值0只有一种表示。

若机器字长为n+1位,则:
原码和反码:
整数表示范围: − ( 2 n − 1 ) ≤ x ≤ 2 n − 1 {\color{Red} -(2^{n}-1)\leq x\leq 2^{n}-1} (2n1)x2n1
小数表示范围: − ( 1 − 2 − n ) ≤ x ≤ 1 − 2 − n {\color{Red} -(1-2^{-n})\leq x\leq 1-2^{-n}} (12n)x12n

补码:
整数表示范围: − 2 n ≤ x ≤ 2 n − 1 {\color{Red} -2^{n}\leq x\leq 2^n-1} 2nx2n1
小数表示范围: − 1 ≤ x ≤ 1 − 2 − n {\color{Red} -1\leq x\leq 1-2^{-n}} 1x12n

移码:
整数表示范围: − 2 n ≤ x ≤ 2 n − 1 {\color{Red} -2^{n}\leq x\leq 2^n-1} 2nx2n1
移码全0真值最小,移码全1真值最大


http://chatgpt.dhexx.cn/article/HSEiE1pA.shtml

相关文章

数据的表示:原码、反码、补码、移码以及浮点数的运算

前言 复习到数据表示方面相关的知识,所以在这里做一下记录,也方便大家参考。 什么是 R 进制 对于 R 机制,如果要实现与十进制的转换,则使用 按权展开法,其具体操作为: 将 R 进制数的每一位数值用 R k R…

五分钟理解原码补码反码和移码

这是计算机的基本知识了,一定要好好学。哈哈废话不多说,直接进入正题吧。计算机中有无符号数和有符号数两大类。 有符号数就是正负数,在计算机中正好用0和1分别去代表正和负。(ps:好多人不理解机器数和真值,机器数就是把符号数字…

原码、反码、补码、移码的表示

若字长n为8时,那么45的二进制表示0 0101101 ,若数值X 1.原码 [X]原,在二进制数值中,正数保持不变,负数符号位置1. 2.反码 [X]反,的正数保持不变 , 负数对数值的绝对值每一位按位求反 3.补码…

关于补码移码各自和原码的联系、来历、功能及I EEE754标准中移码范围问题

最近在学习计算机组成原理时,遇到一些问题,记录在此。 如果你对下面这段话有疑惑或者兴趣,我或许能说点什么你感兴趣的。 真值-128的补码:1000 0000,这个补码本身表示的二进制数(无符号)是128,其对应着真…

移码的计算方式

规则:对应真值的补码的符号位取反; 计算公式: 式中:x为真值,n为整数的位数; 形式上补码是先减后增的,移码是递增的;根据人类的习惯,移码可以清楚的反映对应真值的大小…

计算机组成原理学习笔记:定点数、浮点数、原码、反码、补码、移码

定点数与浮点数 所谓定点数就是指小数点的位置固定不变而浮点数是小数点的位置是不固定的,会浮动 1 ) 定点数 用熟悉的十进制数来类比,定点数就是我们平时更习惯使用的常规的计数方式,我们会显式的标明小数点的位置Eg: 110.12 2 &#xf…

原码,补码,移码

一、原码 ①最高位为符号位,0表示正数,1表示负数; ②除符号位其它数值部分,就是数值本身绝对值的二进制数; ③负数的原码是在其绝对值得的基础上,符号位变为1; 但是: 0的表示不唯一&…

移码补码原理

计算机中的“数”,花样很多,又是ASCII码、又是BCD码等等,下面,做而论道写了一些关于移码、补码的一些看法,欢迎拍砖。 机器数 计算机中的“数”,其实都不是数字,它们都是一些高、低电平。其中&a…

浮点数与移码

浮点数的组成和计数原理 浮点数是什么浮点数的表示与规定浮点数的规定(IEEE754 标准)浮点数的表示范围(IEE7标准瞎)阶码用移码表示 浮点数是什么 浮点数就是小数点可以任意浮动的数字。   因为在计算机的机器语言中,…

图神经网络时代的深度聚类

©PaperWeekly 原创 作者|纪厚业 学校|北京邮电大学博士生 研究方向|图神经网络和推荐系统 聚类作为经典的无监督学习算法在数据挖掘/机器学习的发展历史中留下了不可磨灭的印记。其中,经典的聚类算法 K-Means 也被选为数据挖…

聊聊测试工程师的核心能力模型

这是鼎叔的第二篇原创文章。 行业大牛和刚毕业的小白,都可以进来聊聊。 多年大厂技术总监和质量通道委员经验,横跨多个不同领域,微信公众号“敏捷测试转型”,欢迎多多交流。 鼎叔过往接触过各个团队的测试(测试开发&…

对比学习有多火?文本聚类都被刷爆了…

文 | 花小花Posy 大家好,我是小花。 对比学习的大火???? 越来越旺了,已然从CV蔓延到NLP了。今天给大家介绍的正是一篇将对比学习应用到文本聚类上的工作,NAACL21新鲜出炉的paper——《Supporting Clustering with Contrastive Learning》…

(附源码)小程序 记账微信小程序 毕业设计 180815

记账微信小程序 摘 要 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,记账微信小程序被用户普遍使用&#xff0…

使用Python+OpenCV+Tensorflow实现图像聚类

介绍 大家好,最近在参加深度学习竞赛时,遇到了一个有趣的问题,即如何将给定的图像集进行聚类,你可能会说,这不是一个简单的分类问题吗?使用卷积神经网络, 就实现,但关键在于没有合适…

论文阅读笔记(15):Deep Subspace Clustering with Data Augmentation,深度子空间聚类+数据增强

论文阅读笔记(15):Deep Subspace Clustering with Data Augmentation,深度子空间聚类数据增强 摘要1 介绍2 相关工作带增强的聚类方法具有一致性损失的自监督子空间聚类中的自表达模型 3 深度子空间聚类数据增强总结 4 寻找有效增…

【SaaS金羊毛】微信小程序We分析

微信前几天发布了通告https://mp.weixin.qq.com/cgi-bin/announce?actiongetannouncement&announce_id11652079103ziYFG&version&langzh_CN&token,小程序统计模块会升级为”We分析“这样一款独立的产品。实际上这也符合很多B端产品的趋势&#xff…

Python 如何确定K-Means聚类的簇数

背景 “人以类聚,物以群分”,在大千世界中总有那么一些人,性格爱好、行为习惯比较相近,我们就会把他们归为一类人,这就是我们人脑自动进行的一个聚类(归类)。 在数据分析中,我们也经常拿数据来进行K-Means聚…

【机器学习】聚类代码练习

本课程是中国大学慕课《机器学习》的“聚类”章节的课后代码。 课程地址: https://www.icourse163.org/course/WZU-1464096179 课程完整代码: https://github.com/fengdu78/WZU-machine-learning-course 代码修改并注释:黄海广,ha…

【聚类算法】10种Python聚类算法完整操作示例(建议收藏

点击上方,选择星标,每天给你送干货! 来源:海豚数据科学实验室 著作权归作者所有,本文仅作学术分享,若侵权,请联系后台删文处理 聚类或聚类分析是无监督学习问题。它通常被用作数据分析技术&…

理论+实战,一文详解最常使用的10个聚类算法(附代码)

聚类或聚类分析是无监督学习问题。它通常被用作数据分析技术,用于发现数据中的有趣模式,例如基于其行为的客户群。有许多聚类算法可供选择,对于所有情况,没有单一的最佳聚类算法。 相反,最好探索一系列聚类算法以及每…