帝游网提供最新手游APP下载和游戏攻略!

负数的二进制存储负数进制怎么算

发布时间:2024-06-19浏览:6

二进制又称机器语言,是最早反人类的编程语言(我们就不说汇编语言的编译器是怎么写的了。。。)

比如10的二进制是1010,11的二进制是1011(是不是简单了一点?),所以就把2缝成1。

那负数呢?我们该如何存储它们?

负数的存储方式有三种:原码、反码、补码,我们先说原码。

假设9个数为一个单位,10代表的是000001010,但是具体怎么划分呢?

代码

二进制

代码为 0 表示正数,1 表示负数。因此 -10 应表示为:

代码

二进制

看上去好像没什么问题,所以很好奇,如果原码没问题就直接用吧,干嘛还要搞反码和补码呢?

-10+10 是多少?0 对吧?那我们用二进制来算一下:

为什么会出现这样的结果呢?我们来分析一下。一个原因是正负号与结果分开,只在最后才凑在一起。

首先,开头的正负码应该都是0,但是通过加法,负(1)+正(0)=负(1),所以当出现-x + y且y≤x时就会出现这个问题。

第二,-10+10省略正负号后变成10+10,等于20,加上正负号1+0=1(负)后等于-20。

我们来用反码吧!在原码的基础上,把除第一位外的所有数字都改为 0,反之亦然。例如 -10 的二进制是 10001010,可以改为:

类型

代码

二进制

负数进制怎么算_负数的二进制_负数进制怎么转换

原始代码

反码

是 111110101。

是 111111111

类型

代码

二进制

反码

原始代码

100000000 是 -0,客观上没问题。但是你用计算器输入 -10+10 也是 -0。你有没有想过用户的感受?所以我们要用补码,也就是在反码的基础上 +1。

类型

代码

二进制

原始代码

反码

补充

计算111110110+000001010,但是结果是1000000000。但是请注意,它是在十位,所以第一个1出来了,需要除以,也就是000000000,也就是0,-10+10=0,最后才是正确的。

但是-65+-66用8位计算的话就是10111111+101111101=1 01111100,换算成00000011就是3,这是因为位数不够,我们可以换算成9位(100111111+100111101)。

版权申明:内容来源网络,版权归原创者所有。除非无法确认,都会标明作者及出处,如有侵权烦请告知,我们会立即删除并致歉。谢谢!

↑↑↑长按图片识别二维码关註↑↑↑

热点资讯