计算机如何代表整数:两个补充符号
#初学者 #编程 #java #电脑科学

先决条件

您应该知道下面列出的内容,如果您要阅读0个WTF。

整数只是指负和正整数的全部频谱。 10,-4,3.4(nope!),19等。作为人类通常会理解并执行以十进制(基本十)形式表示的数字的操作; 10+4 = 14 8-3 = 5等。但是计算机不了解基本十,例如,计算机无法将13个看成13个,其次是3. nope。它必须转换为二进制(1和0),这是像您这样的现代计算机和我理解的代表。

好的,让我们将数字(例如13)转换为二进制(1101),这就是解决问题。好吧,不是完全。现在的挑战是我们如何代表诸如-3,-5等这样的负面整数?好吧,有许多解决方法的方法。我们会暂时看它们。

您看到,有5位我们可以代表32个不同的数字。如果我们要使用所有这些代表积极的整数,则可以代表0到+31的范围。这称为未签名的整数表示。但是,我们也需要代表负整数,因此我们将一半的二元组分配给正整数,而另一半则将二元组分配给负整数。

但是现在问题是我们分配哪个整数。我的意思是我们应该用什么模式代表5? 0101?好的,-5呢?对于积极的整数来说,它很简单。我们只是将00000 -01111分配给0- +15。另一方面,对于负整数,我们分配10000 -11111。现在,“整数到哪个二进制模式”问题缩小到负整数。哪种二进制模式是哪种负面整数?或换句话说:我们如何计算二进制的负整数的大小。我的意思是从负范围中选择10110的二进制文件,我们怎么知道它代表哪个负整数?是-6,-9,...吗?我们怎么知道?

现在,如果您在积极频谱中仔细观察所有整数的二进制文件以0开始,而负整数则以1开头,因此我们可以使用二进制字符串的第一位来知道它是正(0)还是负(0)( 1)。让我们称之为标志。我们现在知道,如果符号位是一个,则二进制代表一个负整数,但是我们如何计算其价值呢?首先想到的是使用其余数字来计算大小。因此,10000为-0(使用第一个位来了解标志和其余的0000幅度),10011是-3(再次,1知道它的负数和0011用于计算3)等。是这样做的表示形式,称为签名的幅度符号

这不是全部。我们仍然可以提出另一种方法。更仔细地观察...如果您将任何正整数的二进制倒置(例如00101 => 11010),您会得到一个负数!反之亦然。就是这样,只需扭转一个负二进制,然后将所得的正二进制视为其大小。因此,11010的值为-5。如何?好吧,-ve,因为它以1和5开头,因为11010的逆(或更好的补充)是00101等于5。 。

计算2的补体表示并不像我们到目前为止讨论的那样简单。要找到2个负整数的补充,您首先将其相应积极整数的所有位倒入并添加1。这也以另一种方式工作。从负整数的二进制中减去1,然后倒入位以获取相应的正整数。例如,要查找-6的表示形式,您将二进制的二进制倒入+6的二进制。让我们逐步进行该操作; -6的2 s补充表示形式是什么?

  • 6的表示为00110
  • 扭转6的二进制文件,您会得到11001
  • 现在将1添加到11001我们得到11010。因此,2的补充是-6是11010

2的补充是代表整数中最常用的表示法。但是为什么?

为什么2的补充?

我们知道,减法等于负数的加法。 5-3£5 +(-3)。但是,等效性也与二进制数量一样吗?减去等于添加负二进制?如我们所见,我们有三种不同的方式来表示二进制中的负整数,因此每个人的结果都会有所不同。让我们看一下如何使用每个符号计算5 +(-3)的结果:

签名幅度符号中的5 +(-3)

在签名的大小中,5为00101和-3是10011。加法的结果:

//  00101 => 5
// +10011 => -3
// ------------
//  11000 => -8

is-8ðä,但是5+(-3)是两个!

1中的5 +(-3)补充

在1的补充中,5是00101和-3是11100。添加的结果是:

//  00101 => 5
// +11100 => -3
// ------------
// 100001 => 1

是1。在这一点上,您可能想知道为什么100001(6位)为1不-1。既然二进制以1开头,那是否应该使结果成为负数?好吧,原因是我们在这里处理5位二进制文​​件。记住?这就是为什么我们在第五个之后截断所有位,从右到左数。据说被截断的任何额外的位都溢出。现在回到主要讨论。结果仍然不是两个。

2中的5 +(-3)补充

在2的补充中,5是00101,而-3为11101。加法的结果:

//  00101 => 5
// +11101 => -3
// ------------
// 100010 => 2 (again we delete the overflowed bit)

是2!是的,最后!

当数字在2中表示时,添加负二进制作为实现减法的手段,可以得出正确的结果。这意味着,当数字在2中表示时,计算机可以同时执行加法和减法。

让我们有一些有趣的

将最大正数的二进制文件添加到2中,可以使用2中的5位(+15 + 1)中表示; 01111 + 00001。 buh haha​​ha你得到的是-16!繁荣,这就是您立即从最富有的家伙到最贫穷的人的方式 -

我有一个供认...

我提到计算机只能理解二进制数字。虽然对于像您和我这样的现代计算机来说是正确的,但实际上可以制作可以以十进制(基本十)或任何基础计算的计算机,但这将是另一篇文章。

概括

在本文中,我们了解了未签名的整数表示,签名的幅度符号,1的补语,2的补充以及为什么现代计算机使用它来代表整数,我们也对它有所有趣。

>

只是玩!