三分钟轻松了解计算机知识 #二进制

二进制如何表示负数?

大家好,今天看一下二进制里面已经看过整数和小数部分,但是其实数字部分还有一部分是负数没有提到,今天稍微了解一下这样的负数和二进制怎么样的转换。

先看一下这个概念,按照惯例,负数的最高位是为一表示为负数,如果不是唯一0就表示是正数或者是有说明的数字是有符号的还是无符号的。因为按照数字在计算机里面,如果因为每个语言就是后端,比如C++或者Java、Python这些语言,它有符号和无符号是有这样的修饰符号的。

如果是无符号的,无符号就是没有复数,有符号的就是表示有复数的这种。先看一下负数要转成二进制是有这样的过程,并不是将二进制这样的8位的零,一把最高位0改成一就表示是负数了。虽然是负数,但是已经不是原来的是金字的数了,它的过程是这样的。

在这个说之前是有几个概念的,原码是什么?原码就是除符号位本身就是正数的,转为二进制就是原码,也就是大于0,大于等于0的正数转成二进制8为二进制,这个码本身就是原码。反码是将原码的每一个位0和一给互相取反,0变成11变成0,这就是反码。

补码是对于正整数或者0来说,原码和补码是一样的,不需要去操作。对于复数的补码是要在求助的反码之后再去加一,是这样的概念。

后面看一下这样的例子Demo,比如负5用二进字如何去表示?都是按照一个字节,就是默认8位,去看一下应该是怎么样操作。

因为正5的原码是101,前面补齐5个0,最高位一,因为-5是负数,所以最高位的0要变成一,也就是一零零零零一零一,它的反码就等于0和一给取反。但是最高位的一不变,因为它是符号位,这个是表示符号位,不能把符号位给变成0,所以该是0的地方变为一,得到它的反码,最后还得加个一,然后0变成一。

如果最后一位是一,再加一就变成0,然后依次类推,一原本是0就变成11就变成0,继续向上一个位置再加一,就是这样的一个过程,得出来的是这样的一个数,这个就是-5,用二进制表示最后的8位的圆码。

如果是反过来,如果有给这样的一个二进制的8位,8个长度的二进制数,用它来表示十进制数字是多少?因为必须要声明它是有符号还是无符号的,因为本身它也是可以表示一个接近于它,这个八位就是一个自信,接近于它这个最大范围的。

因为所有的都唯一,它最近最后应该是250255,然后这边算一下,因为先说无符号,无符号就是表示是正,正数是251,算下来还是蛮接近这个最大范围的。如果它是一个有符号,那看这个符号为一,它就表示就是负数,所以算的时候,同样不能直接将这个按照正常的一个二进制数据去和2的多少次方去相加,得去有这样的一个过程。

十进制一样的同样的是得求它的圆码,首先得先返码,因为它给给你的已经是一个二进制度了,二进制数了,所以这个相当于是现在这个东西就是一个原码,原码取返得到这么多,取返他的加一得到他的补码,对吧就等于这些。

所以我们最终求出来的,他的正数部分的原码应该是这个101,前面不让5个0,然后他是多少呢?是5,那因为我们这个数字是一个负数,所以要加上一个负号,所以是负,所以这样算才是对的。

原文链接:,转发请注明来源!