1)二级制的引入、权值、
一个二进制值可以用来表示一个数。我们可以把这两种状态叫做“1”和“0”,而不是“真”和“假”,这其实很有用。如果我们想表示更大的东西,我们只需要增加更多的二进制数。这和我们都很熟悉的十进制数一模一样。对于十进制数,一个数字只有十个可能的值:0到9。要得到大于9的数,我们只需要开始在前面加更多的数。
我们可以用二进制做同样的事情。比如,我们以263这个数字为例。这个数字实际上代表什么?嗯,这意味着我们有两张100元的,六张10元的和三张1元的。如果我们把这些加在一起,我们得到263。请注意,每一列都有不同的乘数;在这种情况下,它是100、10和1。每个乘数都比右边的乘数大10倍。这是因为每列有10个可能的数字,从0到9,然后你必须带一个数字到下一列。为此,它被称为基数10记数法,也称为十进制记数法,因为“deci-”表示10。
Binary的工作方式完全相同,只是它是基于2的。那是因为二进制只有两个可能的数字,1和0。这意味着每个乘数必须是其右侧列的两倍。我们现在有4,2和1,而不是100,10和1。以二进制数101为例。这意味着我们有4,0,2和1。将所有这些加在一起,我们得到基于10的数字5。
但是为了表示更大的数,二进制需要更多的数。取这个二进制数:10110111。我们可以用同样的方法把它转换成十进制。我们有1 * 1280 * 641 * 321 * 160 * 81 * 41 * 21 * 1 = 183。
(2)加法运算、表示范围
二进制数的数学也不难。
以183 19的十进制加法为例。首先,我们加上3 ^ 9 = 12,所以我们把2作为总和,把1四舍五入到10s列。现在我们加上8 1 1(进位)= 10,所以和是0加1。最后我们加上1 1(进位)= 2,所以总数是202。
二进制,我们从1s列开始。加1 1 = 2但是没有符号2,所以我们用10,取0作为和,进位1,就像我们的十进制例子一样。1 1 1(进位)= 3,或者二进制1 1,所以我们把和设为1,再进位1,以此类推。我们最终得到这个数11001010,它与基数为10的数202相同。
:下面的全加器完成1位二进制的加法。注意,输入端有一个进位,输出端有一个进位。这些被级联以完成8位的相加。
这些二进制数字1或0中的每一个都称为一位。所以在最后几个例子中,我们用的是8位数字,它的最低值是0,最高值是255,这就要求8位全部置1。这是256个不同的值,也就是2 8。你可能听说过8位计算机或8位图形或音频。这些计算机的大部分操作都是在8位块中进行的,但是256个不同的值处理不了太多,所以这意味着像8位游戏这样的东西被限制在256种不同颜色的图形中。
8位在计算中是如此常见的大小,以至于它有一个特殊的词:“字节”。一个字节是8位。如果你有10字节,说明你真的有80bit。你听说过千字节、兆字节、千兆字节等等。这些前缀代表不同大小的数据。就像一公斤是1000克一样,一千个字节就是1000个字节,实际上就是8000个比特。兆是一百万字节,吉是十亿字节。今天,你甚至可能拥有一个存储容量为1 TB的硬盘。那是八万亿个1和0。
但是等等,这并不总是对的。在二进制中,千字节有2 ^ 10个字节,即1024。说到千字节,1000也是正确的,但我们要承认,它不是唯一正确的定义。你可能也听说过32位或64位计算机这个术语。几乎可以肯定,你现在正在使用一个。这意味着它们以32位或64位块运行。这是很多人啊!
你用32位所能表示的最大数略小于43亿,也就是二进制的32个1。这也是为什么我们的Instagram照片如此流畅美丽;它们由数百万种颜色组成,因为今天的计算机使用32位图形。
(3)二级制表示负数
当然,并不是所有的东西都是正数,比如我大学的银行账户,所以我们需要一种表示正数和负数的方式。大多数计算机用第一位数字作为符号,其中1代表负数,0代表正数,然后用剩下的31位数字作为数字本身。这给了我们一个大约正负20亿的范围。虽然这是一个相当大的数字范围,但对于许多任务来说是不够的。地球上有七十亿人,美国的国债毕竟将近二十万亿美元。这就是64位数字有用的原因。一个64位的数所能代表的最大值约为9200亿。这是很多可能的数字,预计会在一段时间内保持在美国国债之上。
:第一位作为符号,用原始代码形式表示。
但更重要的是补语形式的表示。
正数的补码形式:与原码形式相同,例如7,表示0000 ‘ 0111;
负数的补码形式:先把负数变成正数,用原代码形式表示正数,然后取所有负数;
(此操作是一个补码操作)
-7 = & gt;7 = & gt0000’0111= >1111’1000= >1111’1001。
数在计算机中全部以补码的形式存储。
补码的作用统一了加减法。
假设内存中存储了两个数,(3,5)。注意:它们以补码的形式存储。
如果是3 5,直接输入加法器,0000 & # 39;0011 0000’0101=0000’1000,得到8的补数;
如果是3-5,对5进行补码运算(取逆加1)0000 & # 39;0101= >1111’1010= >1111’1011
然后输入加法器,0000 & # 39;0011 1111’1011= 1111’1110,得到-2的补码;
也就是说,加法器电路可以用于加减运算,输出可以直接放入存储器,但在减法时,先对减数进行补码运算。
(4)二进制表示内存地址
最重要的是,正如我们将在后面的图中讨论的,计算机必须在其内存中标记一个名为“地址”的位置,以便存储和检索值。随着计算机内存增长到GB和TB级别(即万亿字节),它也必须具有64位内存地址。
内存地址,直接用原码表示。范围是0-2 n-1 n =地址线的数量,例如64。
(5)二进制表示小数
除了负数和正数,计算机还必须处理非整数,比如12.7和3.14,甚至Stardate 43989.1。这些数字被称为浮点数,因为小数点可以在数字之间浮动。已经开发了几种方法来表示浮点数,其中最常用的是IEEE 754标准。你以为只有历史学家不擅长给事物命名啊!本质上,这个标准存储十进制值有点像科学记数法。比如625.9可以写成0.6259 * 10 ^ 3。这里有两个重要的数字。. 6259称为有效数,3是指数。
在32位浮点数中,第一位用来表示数字的符号。接下来的8位用于存储指数,其余23位用于存储有效数字。
1.0001的前1不参与编码:小数点移动时,必须保证小数点前面有1,所以前1不参与编码。指数3 127是二进制编码的,即指数的表达范围。
(6)二进制表示字符
好吧,我们已经讨论了很多关于数字的问题,但是你的名字可能是由字母组成的,所以对于计算机来说,有一种表示文本的方式是非常有用的。然而,计算机并没有使用特殊形式的字母存储,而是简单地用数字来表示字母。也许最直接的方法就是简单地给字母表中的字母编号,其中A是1,B是2,C是3,依此类推。事实上,弗朗西斯·培根,一位著名的英国作家,在17世纪使用一个5位序列对英语字母表的所有26个字母进行编码来发送秘密信息。
5位可以存储32个可能的值,所以这对于26个可能的字母来说足够了,但是对于标点符号、数字和大小写字母来说就不够了。输入ASCII,美国信息交换标准代码。ASCII发明于1963年,是一种7位代码,足以存储128个不同的值。有了这个扩展的作用域,它可以对大写字母、小写字母、数字0到9以及@符号和标点符号等符号进行编码。例如,小写A用数字97表示,而大写A是65,冒号是58,右括号是41。ASCII甚至有一些特殊的命令代码,比如换行符,来告诉计算机从哪里换到下一行。在旧电脑上,如果不包含换行符,文本行实际上会超出屏幕边缘。
因为ASCII是如此早期的标准,所以它被广泛使用,并允许不同公司制造的不同计算机交换数据。这种交换信息的普遍能力被称为互操作性。然而,它有一个主要的限制:它实际上只为英语设计。
好在Byte Note 7有8位,很快就流行用以前不用的代码128-255来表示国字。在美国,这些额外的数字主要用于编码额外的符号,如数学符号、图形元素和常见的重音字符。另一方面,虽然拉丁字符被广泛使用,但俄罗斯计算机使用额外的代码来编码西里尔字符,希腊计算机使用希腊字母。和国家字符代码在大多数国家/地区都能很好地工作。
问题是,如果你在土耳其的电脑上打开一封用拉脱维亚语写的邮件,结果完全无法理解,而随着亚洲计算的崛起,事情完全崩溃,因为汉语和日语等语言有成千上万的字符。没有办法用8位编码所有这些字符。
作为回应,每个国家都发明了多字节编码方案,都是互不兼容的。日本人对这个编码问题非常熟悉,甚至给它起了一个特别的名字,mojibake,意思是“乱码”。
于是就诞生了:Unicode,一种统治他们的格式。设计于1992年,所有不同的国际方案最终被废除,并由一个通用编码方案取代。最常见的Unicode版本使用16位,包括超过一百万空的代码,足以容纳已经使用过的每种语言中的每一个字符——超过100种类型的文字中的12万个,加上空的数学符号甚至图形字符,例如表情符号。
(7)二进制表示其它内容
类似于ASCII定义的将字母编码为二进制数的方案,MP3或GIF等其他文件格式使用二进制数对照片、电影和音乐中的声音或像素颜色进行编码。最重要的是,在幕后,这一切都归结为一个长序列的位。短信,这个YouTube视频,互联网上的每一页甚至你电脑的操作系统都只是一长串1和0。
,
85658