网站首页 > 博客文章 正文
最近看了一些文章说原码、反码、补码。还有一些软考的那些讲师讲解。直接说这样背就没有问题了。完全没有解析背后的原理。下面就是软考的其中一页PPT。写得是没错,但是这样背,很快就忘记了,我想从另外一个方向和你说。为什么会出现原码、反码和补码?他们解决了什么东西。
其实出现这些都是为了方便表示一个负数,而且在实现数的运算的时间更简单。现在计算机表示一个数都是用补码,它解决了+0,-0的问题。
下面用4个比特位来表示数
原码表示:最高位(MSB most significant bit)代表符号位,0为正,1为符。你会发现会有-0(0000),+0(1000),和我们平时生活当中只有一个-0和+0是一样的相违背。然后对一个数进行加法。按我们正常的去做加法,你会发现会结果是错的。
明明+1 +(-1)=0,但是你看下面对应的码表是-2.如果想纠正这种结果也可以通常复杂的逻辑组件实现。看结果是不是有点反人性。所以计算机放弃使用这种表示一个数。
反码表示:这个你是需要记的,反码是将正数取反(也就是翻转它所有位,在硬件层面就是进行NOT运算)。直接上图。你会发现仍然存在一个+0(0000),-0(1111)的问题。
做加法是怎么操作的呢,使用循环进位这种方法,如果加法在最高位有溢出,就从最低位加1.如果不理解你再多看一次加粗的话还有再看一次图。如果没有溢出就不用管,但是这样还是比较麻烦,因为要多做一步加1的操作(我看《计算机系统解密》这书上说这样操作加法麻烦,但是我觉得采取补码的表示方法你本来也就要采取码加1的做法,不也是多做了一步加1的操作吗,怎么就说有更简单的方法呢)。但是采取补码运算时方便了。
补码表示:对正数取反,也就是对每一位进行NOT运算,然后加1,如果出现进位溢出,那就丢弃。 你看0就是(0000),如果你按补码的规则,0000取反就是 1111再加1就是[1]0000,其中1是溢出,那就丢弃,那还是0000,所以完美地0只有一种表示方法。而且原码,反码都出现了两个0,补码只有一个0,所以补码能表示更多数,多在能比补码反码多表示一个负数。
书中插图那里我认为不对,-1应该是1111的表示。它想寻找一个-1的表示方法。就是什么数加1会等于0。0的表示方法和1的表示方法已经规定了好了。所以在寻找一个-1的表示方法,然后就得出了补码的规则。所以你知道为什么会出现这些不同码的表示方法了吧。就是为了寻找一个高效的方法(排队奇异,使运算简单)来表示一个负数。
现在你已经了对原码,反码,补码清楚了吧。当你遗忘,你想想怎么表示一个负数,能够不出现+0,-0的现象。计算是使用补码来表示的负数的。最后来做几道题来结束吧。
(1)十进制数-48用补码表示为( )
A、10110000 B、11010000 C、11110000 D、11001111
(2)已知X、Y为两个有符号数的定点整数,它们的补码为:[x]补=00010011B,[y]补=11111001B,则[X+Y]补= B
将你的答案写在评论区。
猜你喜欢
- 2024-10-01 膏方出现“返砂”还能继续服用吗?
- 2024-10-01 封“神”纪(53)丨青衫取醉:要想反套路创作,你得非常熟悉行业的套路(上)
- 2024-10-01 欲高反下 欲取反与(原创)(欲高反下的自然规则)
- 2024-10-01 反道之妙:欲闻其声,反默;欲张,反敛;欲高,反下;欲取,反与
- 2024-10-01 “男子故意1次取1元逼哭柜员”,网友炸锅!
- 2024-10-01 男子故意1次取1元逼哭柜员,银行回应→
- 2024-10-01 PKS系统中的四种取反(简述pki的系统构成)
- 2024-10-01 如何使用C脚本实现WinCC C单按钮取反
- 2024-10-01 高中化学重点:酸碱中和滴定+酸的强弱规律总结
- 2024-10-01 银行回应男子柜台故意1次取1元:柜员询问他取款用途,这是反洗钱的要求
你 发表评论:
欢迎- 最近发表
-
- 给3D Slicer添加Python第三方插件库
- Python自动化——pytest常用插件详解
- Pycharm下安装MicroPython Tools插件(ESP32开发板)
- IntelliJ IDEA 2025.1.3 发布(idea 2020)
- IDEA+Continue插件+DeepSeek:开发者效率飙升的「三体组合」!
- Cursor:提升Python开发效率的必备IDE及插件安装指南
- 日本旅行时想借厕所、买香烟怎么办?便利商店里能解决大问题!
- 11天!日本史上最长黄金周来了!旅游万金句总结!
- 北川景子&DAIGO缘定1.11 召开记者会宣布结婚
- PIKO‘PPAP’ 洗脑歌登上美国告示牌
- 标签列表
-
- ifneq (61)
- messagesource (56)
- aspose.pdf破解版 (56)
- promise.race (63)
- 2019cad序列号和密钥激活码 (62)
- window.performance (66)
- qt删除文件夹 (72)
- mysqlcaching_sha2_password (64)
- ubuntu升级gcc (58)
- nacos启动失败 (64)
- ssh-add (70)
- jwt漏洞 (58)
- macos14下载 (58)
- yarnnode (62)
- abstractqueuedsynchronizer (64)
- source~/.bashrc没有那个文件或目录 (65)
- springboot整合activiti工作流 (70)
- jmeter插件下载 (61)
- 抓包分析 (60)
- idea创建mavenweb项目 (65)
- vue回到顶部 (57)
- qcombobox样式表 (68)
- vue数组concat (56)
- tomcatundertow (58)
- pastemac (61)
本文暂时没有评论,来添加一个吧(●'◡'●)