移码补码原理

article/2025/10/1 11:17:35

计算机中的“数”,花样很多,又是ASCII码、又是BCD码等等,下面,做而论道写了一些关于移码、补码的一些看法,欢迎拍砖。

机器数

计算机中的“数”,其实都不是数字,它们都是一些高、低电平。
其中,高电平为3.2~5.0V,记为1,低电平为0~0.3V,记为0。
这些1、0,显然都不应该称为“数”,应该称为“数码”,称为“机器数”更合适一些。

用8位“数码”,可以形成0000 0000 ~ 1111 1111 共 256 种不同的组合,用16进制表示就更简练一些,把它们像数字一样写在一个数轴上,如下图所示:

 移码和补码 - 非著名博主 - 电子信息角落


无符号数

用这些“机器数”代表人们常用的“数字”,还是很容易理解的,特别是无符号数 0 ~ 255,不用经过任何变换,直接对应就可以了,如下图所示:

 移码和补码 - 非著名博主 - 电子信息角落


有符号数

但是,用“机器数”代表“有符号数”,就要费些心思了,这也是被人弄的很滥的部分。

8位二进制数共有 256 种组合,可以用 128 个代表负数,用128 个代表零和正数,那么“有符号数”的范围就是:-128 ~ -1 、0 ~ +127,画在数轴上如下所示:

移码和补码 - 非著名博主 - 电子信息角落 

 

移码

最简单的代表方式是“移码”。

“移码”就是把所有的数字都加上 128,也就是把 -128 ~ +127 的范围的数字,都平移到 0 ~ 255 范围内,然后再用 0 ~ 255 的“机器数”来表示。

当有符号数和机器数的对应关系如下图时,这就是“移码”:
移码和补码 - 非著名博主 - 电子信息角落 

 

显而易见,机器数0 ~ 127 代表负数 -128 ~ -1,机器数128 ~ 255 代表 0 ~ 127。所有的数字都右移了128,大概这就是“移码”名称的来源吧。

已知一个数 X,其 8 位字长的移码定义为:

    [X]移 = 128 + X                -128  <=  X  <=  127

有兴趣的读者可以去查看计算机类的书籍,从中可以找到这个式子。

移码,应用的场合还是很多的。多数AD转换器产生的数字,就是用移码表示采样数据的。另外在浮点数中,也有应用。

 

补码

移码虽然解决了表示负数的难题,但是它是把全部数字都向右边移动了 128,正数也都变大了,这就不方便进行数字的计算。
为此,有人提出了“补码”的表示方式,即零和正数不用移动,只是把负数向右移动 256 个位置。

关于补码的由来,可见:
http://hi.baidu.com/%D7%F6%B6%F8%C2%DB%B5%C0/blog/item/d92cc986c2a1523bc75cc380.html

下图就是补码中负数和机器数的对应关系:
 移码和补码 - 非著名博主 - 电子信息角落


下图又加上了正数和机器数的对应关系:
 移码和补码 - 非著名博主 - 电子信息角落

 

可见,机器数0 ~ 127 代表零和正数0 ~ 127,机器数128 ~ 255 代表负数 -128 ~ -1。

已知一个数 X,其 8 位字长的补码定义为:

      /  X                                   0  <=  X  <=  +127 ;0和正数不用变化
  [X]补 = |
      \ 2 ^ 8 -| X |   =   256  +  X        -128 <= X < 0 ;负数就加256

有兴趣的读者可以去查看计算机类的书籍,从中也可以找到这个式子。

从定义式求一个数的补码是非常容易的:是正数就直接变成二进制,是负数先加上256(就变成128~255了)再变成二进制就完了。

补码和移码的互换

从前面的示意图中可以看出,在移码、补码中,仅仅是正数、负数交换了位置,而正数、负数中数字的次序并没有变。

因为机器数0 ~ 127 的最高位都是0,机器数128 ~ 255 的最高位都是1,只要把这最高位变化一下,补码就可以变成移码,同样,移码也可以由此变成补码。

        <div class="person-messagebox"><div class="left-message"><a href="https://blog.csdn.net/baidu_33836580"><img src="https://profile.csdnimg.cn/B/8/D/3_baidu_33836580" class="avatar_pic" username="baidu_33836580"></a></div><div class="middle-message"><div class="title"><span class="tit "><a href="https://blog.csdn.net/baidu_33836580" data-report-click="{&quot;mod&quot;:&quot;popu_379&quot;,&quot;ab&quot;:&quot;new&quot;}" target="_blank">baidu_知道</a></span><!-- 等级,level --><img class="identity-icon" src="https://csdnimg.cn/identity/blog7.png">                                            </div><div class="text"><span>原创文章 532</span><span>获赞 404</span><span>访问量 144万+</span></div></div><div class="right-message"><a class="btn btn-sm attented bt-button personal-watch" data-report-click="{&quot;mod&quot;:&quot;popu_379&quot;,&quot;ab&quot;:&quot;new&quot;}">已关注</a><a href="https://im.csdn.net/im/main.html?userName=baidu_33836580" target="_blank" class="btn btn-sm bt-button personal-letter">私信</a></div></div></div>

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

相关文章

浮点数与移码

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

基于微信小程序的家校通系统-JAVA【数据库设计、源码、开题报告】

第一章 绪 论 1.1选题背景 随着网络时代的到来&#xff0c;互联网的优势和普及时刻影响并改变着人们的生活方式。在信息技术迅速发展的今天&#xff0c;计算机技术已经遍及全球&#xff0c;使社会发生了巨大的变革。 为了不受时间和地点的限制&#xff0c;智能手机用户可以通…

python新闻文本聚类_TextCluster:短文本聚类预处理模块 Short text cluster

推荐Github上一个NLP相关的项目&#xff1a; RandyPen/TextCluster 项目地址&#xff0c;阅读原文可以直达&#xff0c;欢迎参与和Star&#xff1a; https://github.com/RandyPen/TextCluster 这个项目的作者是AINLP交流群里的昭鸣同学&#xff0c;该项目 开源了一个短文本聚…

【组队学习】十一月微信图文索引

十一月微信图文索引 一、组队学习相关 周报&#xff1a; Datawhale组队学习周报&#xff08;第037周&#xff09;Datawhale组队学习周报&#xff08;第038周&#xff09;Datawhale组队学习周报&#xff08;第039周&#xff09;Datawhale组队学习周报&#xff08;第040周&…

k-means聚类算法从入门到精通

点击上方“小白学视觉”&#xff0c;选择加"星标"或“置顶” 重磅干货&#xff0c;第一时间送达 k-means算法是非监督聚类最常用的一种方法&#xff0c;因其算法简单和很好的适用于大样本数据&#xff0c;广泛应用于不同领域&#xff0c;本文详细总结了k-means聚类算…

LaneAF | 利用Affinity Field聚类进行车道线实例分割

点击上方“计算机视觉工坊”&#xff0c;选择“星标” 干货第一时间送达 论文&#xff1a;https://arxiv.org/abs/2103.12040 开源代码&#xff1a;https://github.com/sel118/LaneAF 0 动机 车道线检测对于辅助驾驶、自动驾驶至关重要。全球范围内多种多样的车道线以及复杂的道…

机器学习 --- 聚类性能评估指标

第1关&#xff1a;外部指标 任务描述 本关任务:填写 python 代码&#xff0c;完成 calc_JC 函数、calc_FM 函数和 calc_Rand 函数分别实现计算 JC系数、FM 指数 和 Rand 指数 。 相关知识 为了完成本关任务&#xff0c;你需要掌握&#xff1a; JC 系数&#xff1b; FM 指数&…

如何用 DBSCAN 聚类算法做数据分析?

DBSCAN属于无监督学习算法&#xff0c;无监督算法的内涵是观察无标签数据集自动发现隐藏结构和层次&#xff0c;在无标签数据中寻找隐藏规律。 聚类模型在数据分析当中的应用&#xff1a;既可以作为一个单独过程&#xff0c;用于寻找数据内在规律&#xff0c;也可以作为分类等…

激光点云的物体聚类

点击上方“小白学视觉”&#xff0c;选择加"星标"或“置顶” 重磅干货&#xff0c;第一时间送达 文章导读 本文针对自动驾驶中三维点云的道路目标聚类进行讲解&#xff0c;从聚类算法的原理出发&#xff0c;介绍几种常用的点云障碍物聚类算法&#xff0c;并对比分析算…