为什么使用二进制而不用其他进制

为什么使用二进制而不用其他进制,第1张

为什么采用二进制(使用二进制可以干嘛)

这篇文章对二进制做了非常深刻的解释,所以转发到这里供以后回顾。另外,这里推荐另一篇文章,加强学习体系的转换。

-128的8位补码是:1000 0000B,翻译成十进制的128。

负数的补数按“模数”计算,即:

[X]补码= 256-| x | = 256-|-128 | = 128。

不要用“逆加一”来计算,这只是一个经验公式。

1.逆代码的范围

反码表示规定正数的反码与其原码相同。负数的求反是对其原始代码的逐位求反,符号位除外。

在规定中,8位二进制码所能表示的反码的范围是-127~127。

-128没有反码。

那么,为什么规定-128没有逆码呢?下面解释一下。

首先看-0,[-0]原码=1000 000,其中1是符号位。根据逆码规定,计算[-0]逆码=1111 1111,

看-128,[-128]原码=1000 000,如果Jean -128也有它的逆码,根据逆码,[-128]逆码=1111 1111,

你会发现-128的逆码和-0是一样的,所以为了避免混淆,不能有-128带-0,这是逆码法则决定的。

二。原代码补码的范围

8位二进制数。

原代码-127~127 -128呢???你不是说-128原码是1000 0000吗??

逆代码-127~127

补体-128~127

对于n位二进制数:

你会发现比其他代码多了一个补码。为什么?问题是0。

[0]原始代码=0000 0000,[-0]原始代码=1000 0000。

[0]补码=0000 0000,[-0]补码=1111 1111

[0]补码=0000 0000,[-0]补码=0000 0000。

你会发现0和-0的补码是一样的。也就是说,0的补码只有一个表示。

这里解释一下[-0]补码是怎么得到的。

负数的补数是整个补数加一。标志上写着“丢弃”。(因此,放弃符号位的补码的第一位是数值位,而不是符号位,并且符号位被放弃)

另外解释一下原码的符号位和补码的符号位的关系。补码的符号位不保持原代码的第一位不变,但符号位保持不变。[-0]补码的第一个1是符号位,尾数中的七个1是数值位。尾数加1后,数字位进位,111 1111 1 1 = 1 0000 000(在计算补数的过程中,

所以补码可以表示的数比原码少一个,所以补码可以多表示一个真值为-128的数。

但many代表的数-128比较特殊,只有原码和补码,没有逆码。

-128的补码是1000 0000。

Java学习交流群:737251827

三。为什么-128的补码是1000 0000?

8位二进制的原值表达范围是:-127到127。

从0000 0000到1111 1111共有256个组合序列。原始值28不能用8位表示。

从以下两个角度理解-128的补码为什么是1000 0000。

(1)从补语的意义上理解。

因为:256-128的补数= 256(-128)——机器里只有加法。减法变成了补数的加法。

而256-128=128,所以256的补数(-128) =128,所以(-128)的补数=256-128 =128。数学上128 = 1,000,000,所以-128的补数是1,000,000。

注意:只是规定,下面还有理由。

8位二进制补码组合序列中有256 0000000–0111 1111 0 ~ 127 1000 0000。我们能做什么?

1000 0001 – 1111 1111 -1~-127

再看这个规则表。原始代码补码值是0111 1111 0111 1111 127 0111 110 1110 126.....补码总是-1...0000 0000 0000 0000 0000 10001 1111 1111-1 1000 0010 1111 110-2 1000.011 1111 1101-3 ..................................................................................................................................................................

所以有1000 0000 as -128的补码,和上面的数学表达式一致。

这样,负数的补数将很容易在机器中计算出来。

计算方法是:取负数的绝对值,然后用二进制表示绝对值(不考虑符号位!)二进制数反加一得到负数的补数(也就是补数运算!)128的绝对值是128 128,二进制表示是:1000 0000逆0111 1111加1 1000 0000。这是-128的补码。用这种方法计算的结果符合“规定值”。

四。

1 = 8位,所以它能代表的最大数当然是8位都是1(由于二进制数只能是0或1,如果是我们常见的十进制,那么8位都是9。所以,你应该明白了吧?)

在1字节的二进制数中,最大的数是11111111。

双字节有16位。1111111111111111。双字节的最大数量是:

1 * 215 1 *214 1* 213 1 * 212 1 * 211 1 * 210 …… 1 * 22 1 * 21 1* 20 = 65535

负数在计算机中是如何表示的?

关于这一点,你可能听到了两种不同的答案。

一种是教科书,会告诉你计算机用“补数”表示负数。但是,一说到“补语”这个概念,就需要上一课了。我们需要在第六章讨论二进制的一切。还是那句话,用“补数”来表示负数,其实就是一个公式。公式的作用是告诉你如何计算问题的答案。但是没有告诉你为什么用这个公式可以得到答案!这就是让我困惑的地方。

郑重声明:本文版权归原作者所有。转载文章只是为了传播更多的信息。如作者信息标注有误,请第一时间联系我们修改或删除。谢谢你。

转载:感谢您对网站平台的认可,以及对我们原创作品和文章的青睐。非常欢迎大家分享到个人站长或朋友圈,但转载请注明文章来源“蝶芒网”。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/4541587.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-03
下一篇 2022-11-03

发表评论

登录后才能评论

评论列表(0条)

保存