先决条件
您应该知道下面列出的内容,如果您要阅读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 hahaha你得到的是-16!繁荣,这就是您立即从最富有的家伙到最贫穷的人的方式 -
我有一个供认...
我提到计算机只能理解二进制数字。虽然对于像您和我这样的现代计算机来说是正确的,但实际上可以制作可以以十进制(基本十)或任何基础计算的计算机,但这将是另一篇文章。
概括
在本文中,我们了解了未签名的整数表示,签名的幅度符号,1的补语,2的补充以及为什么现代计算机使用它来代表整数,我们也对它有所有趣。
>只是玩!