From Nand To Tetris 从与非门到俄罗斯方块

10、P1 W2 U2.1 二进制数

2019-07-29  本文已影响0人  shazizm

视频:
如果本次课程对应的 Coursera 的视频打不开,可以点击下面链接
P1W2U2.1 - Binary Numbers

第一周主要讲解了 布尔数(二进制数) 跟 逻辑门 的关系。
这周主要讲解 十进制世界的表示和计算 与 布尔数(二进制)的关系。
这样就可以把现实世界的计算 用 逻辑门 来表达。

二进制数如何表示成我们熟悉的数字(十进制数字)

如下图
第一行:1位(bit)二进制数,只能表示 2 种可能。(0 或 1)
第二行:2位二进制数,可以表示 4 种可能。(00,01,10,11)
第三行:3位二进制数,8种可能
第四行:n位,2的N次方种可能




下图是二进制(Binary) 对应表示的 十进制(Decimal)

但是上图的对应关系是如何进行的呢?回顾一下熟悉的十进制

789(十进制)=7x10^2 + 8x10^1 + 9 x10^0 = 700 + 90 + 8 = 798(十进制)

10的零次方等于1 (10^0 = 1)

从上图可以总结出一个规律,任何进制转十进制的通用公式。

101(二进制) = 1x2^2 + 0x2^1 + 1x2^0 = 4 + 0 + 1 = 5(十进制)

非0数的零次方 = 1,2^0 =1

下图上部给出了 二进制 转 十进制 的 通用公式

另外二进制的位数的大小,也决定了它能表示的最大十进制数。
比如 3位二进制最大数是 111 就是十进制的 1+2+4 = 7。
也能推出一个二进制能表示的最大十进制数的公式:2的位数次方-1

能表示的最大十进制数:2^k - 1 (k = 二进制数的位数)

在计算机里,位数通常是固定的,比如8位。如下图

能表示多少个数:2^k (k = 二进制数的位数)

但事实情况,是计算机还会保留一位数用来表示数的正负。如下图
老师说课程只用正的那部分数(8位二进制的话就是 0 到 127)


于是剩下的7位能表示的最大数就变成127了

最后:十进制 转 二进制

例如 下图 87
注:2的平方数序列(...、256、128、64、32、16、8、4、2、1)

  1. 找出离87最接近的2的平方数,64。
  2. 找出剩下的23(87-64=23)最接近的2的平方数,16。
  3. 依次类推:获得 64 + 16 + 4 + 2 + 1
  4. 还是根据2的平方数序列。从右往左,如果有数字对应,就写1(64、16、4、2、1)。没有,就写0(32 和 8)
十进制 转 二进制

这节学习了 我们熟悉的 十进制 如何 表示和转换成 计算机世界的 二进制。

下节课学习 计算机世界的 二进制 如何 进行计算。

上一篇下一篇

猜你喜欢

热点阅读