二进制原码/反码/补码详解,不懂的请看过来

作者 |伯乐钟情

来源 |博客园


二进制原码/反码/补码详解,不懂的请看过来真值与机器值二进制原码/反码/补码详解,不懂的请看过来


真值很好理解,就是十进制的数字前面再加上正负号,这是人类可以简单识别的数字,比如 0、±16、±1084、±10.34、±100.453 等,而正数前面的+符号可以省略。机器值从字面理解就是机器(计算机)识别的值,实际上也确实是这个意思。


计算机中通过高低电平表示1或者0,这样就可以表示一个二进制的数值。一个1或者0表示的数值位称为一个bit,而计算机中存储和传输数据的最小单位是一个字节(byte)也就是8个bit,所以说计算机所有计算本质上都是基于二进制。


在计算机中,我们可以使用1个或者多个字节存储一个数,但无论是多少个字节,其大小肯定是固定的,同时其所能表示的数值的范围也是固定的。比如说对使用1个字节存储的数进行计算或者传输,那么这个数所能表示的最小值为00000000最大值为11111111,转换为十进制为0 ~ 255。那么无论对这个数做了什么计算,无论计算之后的结果为多少都不能超出这个范围,同理使用2个字节存储的数范围为0 ~ 65535。


由于很多时候一个数据需要使用2个或者2个以上的字节表示,那么这种数据无论是存储还是传输的时候都会有一个顺序的问题,也就是大小端对齐(字节序)问题。在存储时高位字节在前为大端对齐,反之为小端对齐。在数据传输时先传输高位字节为大端字节序,反之为小端字节序。目前绝大多数平台内部都是小端对齐的方式存储数据,而大多数通信协议却都是用大端字节序传输数据,所以这一点值得注意一下。


二进制原码/反码/补码详解,不懂的请看过来符号位与数值位二进制原码/反码/补码详解,不懂的请看过来


计算机中使用二进制存储传输和计算数值,但是不能只有数值,计算的时候还得有正负之分。在计算机中使用最高bit位的数值来表示正负号,这个bit位称作符号位。


计算机中符号位的值为0表示这个数为正数,符号位值为1表示这个树为负数。由于符号位表示符号所以其不表示具体的值,除开符号位剩余的bit位用来表示数值也就是数值位。比如1个字节的整数00000001,其中最高bit(最左边)位的0为符号位,表示这个数为正数,数值位为1,所以其真值为1。同理2个字节的整数00000000_0000001,其真值也是1。


二进制原码/反码/补码详解,不懂的请看过来原码、反码和补码二进制原码/反码/补码详解,不懂的请看过来


计算机只识别机器码,其实也就是二进制数,并且使用最高bit位表示符号位。那么两个真值为8和-8的8位整数,它们在计算机内部的机器值是否就分别是00001000和10001000?其实并不是,这只是8和-8的原码,而机器算计中的机器值是使用补码存储和计算的。


计算机中,正数的原码、反码和补码是一样的,所以上面那个例子中,真值为8的8位整数的机器值确实是00001000,但是-8就不是这么回事了。负数的首先将原码数值位按位取反得到反码,然后再将反码数值位加1之后则得到补码。我们来看一下-8这个例子,其原码为10001000,数值位按位取反之后的反码为11110111,然后数值位加1之后的补码为11111000。所以真值为-8的8位整数在计算机中的机器值为11111000,我们来看下面这张表:


二进制原码/反码/补码详解,不懂的请看过来

注:int8为8bit位整数占用1byte,int16为16bit位整数占用2byte。


刚说的是原码转补码的步骤,其实补码转原码的步骤是一样的。首先正数的原码补码是一样的不需要转换,我们看负数11111000,首先将数值位按位取反得到10000111,然后再将数值位加1得到10001000。我们再来看一个8位的整数10000000,是不是发现这个数原码和补码是一样的,那么这个看起来像是“-0”的数是怎么回事呢?其实可以将这个数看成是一个特殊值,它的真实含义就是最小值。8位的这种“-0”的真值为-128,16位的这种“-0”真值为-32768。所以只需要记住100...000这种补码就是最小值就行,我们看下面的这张表:


二进制原码/反码/补码详解,不懂的请看过来


有两对8bit位的整数4、8和4、-8,我们分别看一下他们在计算机中是怎么做加法计算的。首先看4和8的补码分别为00000100和00001000,只需要将每个bit位相加就行,结果为00001100,其真值为12。我们再来4和-8的计算,它们补码分别为00000100和11111000,然后将它们按位相加(注意符号位也要做加法)得到11111100,其原码为10000100,真值为-4。


再来看一下减法计算,比如8bit位的整数-8减去4,首先可以将4处理一下可以变为(-8) + (-4),这样是不是就又变为了加法了?-8和-4的补码分别为11111000和11111100,将它们按位相加得到补码11110100(注意这是8位的整数,超出部分发生了溢出),转换成原码为10001100,真值为-12。


再来看一下乘法,比如8bit位的整数-8乘以13,他们的补码分别为11111000和00001101。其中-8为被乘数,13为乘数,并且乘数有8个bit位,需要将被乘数按位与和位计算8次然后将结果相加,看如下分析:

  • 被乘数的第0个bit位值为1,将被乘数乘以1然后左移0位得到:11111000;

  • 被乘数的第1个bit位值为0,将被乘数乘以0然后左移1位得到:00000000;

  • 被乘数的第2个bit位值为1,将被乘数乘以1然后左移2位得到;11100000;

  • 被乘数的第3个bit位值为1,将被乘数乘以1然后左移3位得到;11000000;

  • 被乘数的第4个bit位值为0,将被乘数乘以0然后左移4位得到;00000000;

  • 被乘数的第5个bit位值为0,将被乘数乘以0然后左移5位得到;00000000;

  • 被乘数的第6个bit位值为0,将被乘数乘以0然后左移6位得到;00000000;

  • 被乘数的第7个bit位值为0,将被乘数乘以0然后左移7位得到;00000000;


由此可以得计算得到8组补码(注意上面做位移涉及到的整数溢出,只能是8个bit位),然后将它们做加法得到10011000(也存在整数溢出)转换为原码为11101000,真值为-104。


至于除法则是使用交替加减法的方式,本文只是对计算原理做一下扩展,这里不再继续深入做介绍,如果有想了解的可以自行上网查询。


通过上面的分析可以知道,使用补码可以将所有计算都转化为加法计算,这样可以让计算机底层对于整数计算变得简单,反码属于历史遗留,因为其存在±0的问题。


*节选自《二进制小总结》

https://www.cnblogs.com/lbole/p/14260496.html

二进制原码/反码/补码详解,不懂的请看过来二进制原码/反码/补码详解,不懂的请看过来
扫码入群
扫码添加管理员微信

加入“电子产品世界”粉丝交流群

↓↓↓↓点击阅读原文,查看更多新闻

上一篇:洞察:3D打印大批量生产应用,正在加速
下一篇:

相关推荐

2020-2021年中国云计算产业全景洞察研究预告|报告

2020-2021年中国云计算产业全景洞察研究预告|报告

1993 人称T客

云计算在中国12年发展迎来重大的商业抓手——数字化。云计算支撑数字化,数字化促进云计算深化,实现传统信息化到数字化的时代跳跃,云计算成为最坚实的桥梁。中国云计算市场发展开始深刻改变社会各个领域的形态,生产制造、金融、教育、零售等行业从产业链关系到企业经营形态乃至岗位分工都发生了结构性改变。2021年中国企业数字化程度进一步加深,云计算产业随之迎来新的机遇。T

2021年云计算产业链依然是很好的投资赛道?

2021年云计算产业链依然是很好的投资赛道?

1812 新财富投研圈

2020年新冠疫情以猝不及防之势席卷全球,全球产业链、供应链受到重大冲击,云办公、云娱乐、云学习、云消费等云需求激增,极大缩短了市场教育进程。为匹配新环境下新需求,企业数字化转型迫在眉睫。与此同时,新基建成为政府的重点发力领域,5G建设速度及规模超预期进行,驱动着云计算、人工智能、物联网等技术在工业、政府、金融等垂直行业的融合应用。多种因素驱动下,云计算产业

2021年计算行业机遇在“边缘”:浪潮与百度联手树标杆

2021年计算行业机遇在“边缘”:浪潮与百度联手树标杆

721 海峰看科技

“快速增长的智能终端将带来大量数据及AI决策需求,带动企业基础设施投资向边缘侧迁移,边缘计算产业在未来5年将以超30%的复合增长率高速增长。”浪潮边缘计算事业部总经理孙波在近期的“2020百度云智峰会”上这样讲到。2021年伊始,各大计算企业都在找寻新机遇。我们看到,在“新基建”背景下,5G、AI、物联网等技术发展,牵引着算力从数据中心向边缘侧发展。边缘计算

小学数学计算题难?记下这份知识点汇总,受益期末考

小学数学计算题难?记下这份知识点汇总,受益期末考

1883 小学数学教师交流

整数四则运算1整数加法:把两个数合并成一个数的运算叫做加法。在加法里,相加的数叫做加数,加得的数叫做和。加数是部分数,和是总数。加数+加数=和一个加数=和-另一个加数2整数减法:已知两个加数的和与其中的一个加数,求另一个加数的运算叫做减法。在减法里,已知的和叫做被减数,已知的加数叫做减数,未知的加数叫做差。被减数是总数,减数和差分别是部分数。加法和减法互为逆

刘鹏教授受邀在国家超级计算深圳中心作报告

刘鹏教授受邀在国家超级计算深圳中心作报告

456 云创大数据

12月30日,中国大数据应用联盟人工智能专家委员会主任、中国信息协会教育分会人工智能教育专家委员会主任刘鹏教授受邀在国家超级计算深圳中心作主题报告,该中心多位领导和工程师参加了报告会。其中,刘鹏教授所作报告主题为“大数据、人工智能与应用实践”。该报告聚焦于云计算、大数据与人工智能构成的“铁三角”,探讨与剖析了大数据的爆炸式增长趋势。包括从存储、处理、传输直至

江西电信在云计算发展初见成效 还大建数据中心要干啥?

江西电信在云计算发展初见成效 还大建数据中心要干啥?

1814 运营商观察

日前,知情人士透露,江西电信当地尤为重视天翼云发展,其中开通自研天翼云桌面,领先其他省份,看来这将为新任总经理肖柳南及副总张群和徐廷芳在政企业务发展上打下良好的基础。据悉,2020年上半年,中国电信中部云计算大数据中心(二期)600多个服务器机柜已启动建设。二期项目计划投资7亿元,已于9月建成投入使用。该数据中心由江西电信投资建设,作为核心节点之一纳入中国电

孩子数学计算老出错?复习阶段,家长赶紧和孩子一起找准原因!

孩子数学计算老出错?复习阶段,家长赶紧和孩子一起找准原因!

434 小学数学教师交流

孩子作业考试算术为什么总是会错呢,不是这题的运算符号错了,就是那题的数字写错了。只是因为孩子做题不细心么?不然。其实孩子在计算中出现错误的原因是多方面的,粗心只是其中原因之一,仅占一小部分。那么,导致孩子计算失误的原因还有哪些呢?一起来看看吧!01视觉迁移引起的感知错误小学生特别是中段学生,其思维特征是由现象思维过渡到抽象思维,极易对相似、相近的数据或符号产

时隔四年,《尼尔:机械纪元》的秘密终于被发现了!
游戏

时隔四年,《尼尔:机械纪元》的秘密终于被发现了!

622 新浪游戏频道

点击上方蓝字关注我们↑↑↑在2017年发售的《尼尔:机械纪元》已经在全平台上销售超过了500万套。通关了游戏的大多数玩家,往往沉溺在治(致)愈(郁)的剧本之中,许多玩家请愿制作人横尾太郎发发善心,救救主角……2018年时,《尼尔:机械纪元》开发者曾在接受采访时表示,游戏中还有一个「最后的秘密」没有被发现。游戏发行将近4年之后,玩家们似乎终于发现了这个“秘密”

女子发现哈士奇最近躲在狗窝里不出来,细看之后不淡定了
萌宠

女子发现哈士奇最近躲在狗窝里不出来,细看之后不淡定了

976 二货萌宠屋

说到二哈,大家都知道是哈士奇,由于二哈聪明伶俐,长得比较好看深受很多人的喜欢,可是大部分都知道二哈还是一个非常勤劳的拆家能手,因为你不知道什么时候,家里的某样东西会毁在它的嘴上,聪明的二哈有时候也会做出一些让主人意想不到事!生活中王女士就养了一只非常可爱的哈士奇,这只哈士奇最近几天不知道咋了经常躲在狗窝里不出来了,而且前几天在超市买的几根火腿肠也不见了,出于

每次拜完年,我家狗都要进一次医院。
萌宠

每次拜完年,我家狗都要进一次医院。

198 狗先生

来源|狗先生(ID:dogsir666)编辑|狗先生还有一个月就要过年了,疫情很严重,但是也免不了三两亲戚吃个饭。本来是很愉快的一件事,可是却让很多宠物主犯了难。甚至有人说:每次拜完年,我家狗都要进一次医院。究竟发生了什么事呢?有网友诉苦:老爸朋友来家里玩,正赶上家里在吃饭,看见桌上一盘炒猪肝,拿起筷子就给我家汪夹了块喂给它。我已经说了狗狗不能吃这些咸的东西

给流浪狗一口吃的,而它的举动...懂事到让人心疼!
萌宠

给流浪狗一口吃的,而它的举动...懂事到让人心疼!

975 大爱狗狗控

网友拍下的一幕:饭店里,好心人发现门口有一只流浪狗,就招呼了它过来,递给了它一块肉...而狗狗有点不知所措,还回头看了看,仿佛是在确定,这是给自己的。确定了之后,它就摇着尾巴,小心翼翼的走上前,慢慢咬住了食物...它没有当场狼吞虎咽,而是叼着食物离开了。小心翼翼,谨慎,礼貌,懂事到让人心疼...这是不少网友在看到这段画面时,对这只流浪狗的描述,可事实上,这些

《变成大人也不要忘记》,写给少年和成年人的一部温情之书
游戏

《变成大人也不要忘记》,写给少年和成年人的一部温情之书

1955 TapTap发现好游戏

每个人都有开拓圆满未来的可能,但为了获得而付出的勇气如今的你还有吗?《变成大人也不要忘记》是一款以穿越时空改变未来为题材的3D高清像素AVG游戏。成为大人也不要忘记的究竟是什么?游戏给出自己的说法,希望打通的玩家最终也能得到自己的解答。因为是GEGAX的游戏,熟悉这家公司作品的小伙伴应该会立刻被满满的怀旧和温情所包裹。《昭和系列》《关东煮系列》《庆典系列》…

新赛季战令皮肤曝光,狼狗哭了!史上最丑赛季皮肤出炉?
游戏

新赛季战令皮肤曝光,狼狗哭了!史上最丑赛季皮肤出炉?

1563 电竞怪客

hello大家好,这里是怪客君!随着新赛季开启时间的一步步临近(1.14号),天美关于新版本的爆料消息终于渐渐多了起来(窜稀式爆料模式开启)。就在昨天,S22赛季的战令皮肤以及相关奖励已经得到了官方的公布,具体情况我们一起来看看吧!S22段位继承先看下官方公布的S22赛季的段位继承规则,和之前几个赛季一样,怪客已经给大家看过好几次了。最强王者20星以上,将继

在门上做了一个猫洞,以为猫主子会感动,结果却还是被嫌弃!
萌宠

在门上做了一个猫洞,以为猫主子会感动,结果却还是被嫌弃!

1296 二货萌宠屋

我们家猫主子特别喜欢钻洞,而且完全不允许我们在家有任何的隐私空间,就算是睡觉也是不允许关门的,要不然你晚上肯定睡的不好,这家伙不是抓门就是狂叫,而且在长期以来的实践中,这家伙学会了开门!因为之前的门被猫主子抓的完全不成形了,于是我就想着给家里换个门,在做门的时候我还特意的叮嘱师傅给我家的门做了一个猫洞,我想着这个动作肯定是很暖心的,猫主子一定会喜欢的!好不容