H什么的最讨厌了! 收藏本站
登陆 / 注册 搜索

阅读: 2.8K   回复: 1

[# 系统基础] 计算机原理(二进制)

仗剑天涯论坛大牛 2020-3-31 20:01 |显示全部楼层

今生相逢便是缘分,何苦去怨恨,何苦去仇视。

主题破百
作者|刘栋梁,微信公众号|软件那些事儿8 |0 a, x6 `2 J2 M6 Q0 e2 Y

. C: x/ I: G1 I  o一、二进制
2 i3 p0 @, [' R. ^1 l$ {/ S5 J  n/ F" U- F8 {: _" u/ F
只要是学习计算机的,或者不学习计算机的,都一定听说过二进制这个词语。什么逢二进一,反正感觉不像人话,也听不懂。不管懂不懂呢,大家基本都认识到了二进制的巨大威力,并且也知道了这样一个笑话,世界上有10种人,一种懂二进制,一种不懂二进制。所以,这一次,我想讲讲二进制的一些故事。
1 ^/ w0 w& X. ^, }
& P1 L, H4 A$ l6 |; @  ?
计算机原理(二进制) shutterstock_1141880129.jpg
1 R- ~2 C+ z6 L5 t7 J
在正式讲二进制之前,我先来说说二维码。4 \* V# W$ B; m2 r
3 q! N# E4 \  F: M/ K0 u
二、二维码
1 m& t) q$ D) Z; [
! N1 I5 I$ G. T" ]: z自从手机时代以后,每个人都难免要扫一扫二维码。什么是二维码呢?简单来说,二维就是平面,码就是code的意思,编码。二维码就是在平面方向上一个黑白相间的图形。
5 V/ p  q5 ^8 g* N: |9 _3 L& u& h
' ?4 |6 ?# r) V0 z6 i* r4 |" }
计算机原理(二进制) QR_code_for_mobile_English_Wikipedia.svg.png
2 m/ ?/ p& a2 }" l
比如说,我们经常使用的微信的二维码就是其中的一种,也是最流行的一种二维码,叫做矩阵式二维码。这个二维码上有三个最大的色块,就是角上那三个最大的色块,是用来定位的,这样就不怕扫描二维码的时候,手机拿偏了,导致信息扫描不出来。0 m9 s+ O) L& U- q) N

  S/ h0 A6 e. d: V矩阵二维码有很多版本,在这里只讲version 1, 一个21×21的矩阵。二维码有40个尺寸,每一个尺寸增加4,也就是说version 2是25×25,最大的尺寸是21+(40-1)*4 = 177,最大的尺寸就是177 X 177个小格子。可以把这个想象成围棋的棋盘。对二维码进行编码就是把这个棋盘涂成黑白两种颜色。其中当然包括很多其它的技术细节,我只讲几个技术细节,首先讲纠错码。
, k# [8 J) k: q1 X& K* h
7 {0 }2 l3 g1 j: n  C& _. [在我们常见的二维码中,分为四种级别的纠错码,分别是LMQH四种级别。L 级别是7%的字码可修改,M级别是15%的字码可修改,Q级别是25%的字码可修改,H级别是30%的字码可修改。所以,二维码破损也可以被识别。很多人在二维码上加上自己的头像。二维码纠错的算法是Reed-Solomon error correction(里德•所罗门纠错算法),比较复杂,纯数学。然后再将这数据和纠错码交替放在一起,最后一步才是填充最后的编码。4 ]' f, H6 q4 y3 h" G5 E

9 T, g+ x* w  X/ F* }  r填充的过程是从左下角开始填充,黑色代表1,白色代表0,如果碰到非数据区,就绕开或者跳过,最后,就生成二维码的图片。生成以后,如果二维码出现大面积的空白或者黑色,扫描起来会更困难。所以,最后填充的图片还要经过一个操作,叫Masking(化妆)。QR里面有8个不同的图形供大家选择,这8个图像黑白分布非常均匀,因此,还要把最终生成的图像和这8个提供的mask图像做一个XOR操作。这个Mask操作只和数据区进行操作,不会影响功能区。所以我们看到的二维码,不会出现大片连续的黑色或者大片连续的白色。/ }, i8 k9 U$ p5 X2 `

+ D' A  _2 }4 w  B# n) X0 n) E  V* r我为什么讲二维码呢?因为二维码可能是目前我们用眼睛看到的,用的最多的一种二进制。黑色的代表1,白色的代表0。计算机中就是使用二进制。. ~, x9 H6 n6 J

$ h0 C0 [' G7 U2 F( Y; Y三、十进制: \/ h3 E, |% [% I; W2 @0 r# q3 K

3 k( t" o& w' _, o" S+ d不管我们是去日本还是去美国,可能其它的文字看不懂,但是去超市的话,有一个东西一定看得懂,就是数字。从0-9这十个数字,不管哪个国家,都是使用这个方式来写数字,除了一些美洲的印第安人部落可能使用其它的计数方式。可以说,阿拉伯数字是最通用的语言。这0-9的十个数字是人类广泛使用的计数体系。据说,十进制在5000多年以前就出现在古埃及了,中国也考证说在殷墟里的甲骨文上也发现了十进制,大约3000多年以前。具体是不是真的,我不知道。
+ B- @: q+ G: r! Y9 d
5 g& U7 U7 v* e' o有个说法是,因为人有十根手指,所以才使用十进制,如果青蛙来计数的话,可能是8进制,因为青蛙可能是有四根手指头,我从网上搜了几张图片看了一下,感觉是四根手指头。当然了,我不懂生物学,只是个程序员,闷声写代码,如果说错了,不要笑我太简单太幼稚。如果青蛙会认识数字的话,应该也是数手指头,可能会用8进制,所以,以后如果青蛙开始制造电脑,天生使用八进制,应该是个非常大的优势。+ [- F; L6 e& l

: Y) o8 a4 `. A7 S& k四、算盘
$ C  E3 j: X, u' h, n+ J) \; r7 Q* t2 w: I
算盘这个东西,我们这里有意无意的暗示,这玩意是中国发明的,而且算盘和计算机有莫大的关系。这么说也不算错,中国算盘确实是中国发明的,但是这个世界上存在各种各样的算盘,有巴比伦算盘,有古希腊算盘,有古罗马算盘,样子都差不多。都是使用一些小球球来计数,中国的算盘其实是宋朝末期,元朝初期才开始大规模流行。在此之前使用的方法是算筹,这玩意也很先进,有兴趣的可以研究一下,算筹这个从周朝,汉朝就大规模使用了,就是用一些木棍就能计算。8 f: m; A( o, ^) {2 q' S
# e) n' X0 G3 R* V
计算机原理(二进制) Replica_of_Han_Dynasty_Counting_rods_in_National_Museum_of_Natural_Science_in_Taiwan.jpg
1 Z& Z2 L& G$ b* H
我们古代的算盘是上面两个珠子,下面五个珠子。如果用这种算盘来计数十进制的话,有两个珠子永远都用不到,所以,日本的算盘是上面一个珠子,下面四个珠子,我们中国现在的算盘,基本上也是日本算盘的样子,当然,现在都用计算器了。现在很少见到有人用算盘了。我看过一篇文章,因为中国有一个成语叫“半斤八两”,那篇文章里说,中国古代的算盘其实是计算十六进制的,如果那篇文章是正确的,那就能解释为啥中国古代算盘是上面两个珠子,下面5个珠子,因为这样,正好是十六进制中的最大的数15,而中国古代,16两算一斤,不是现在的10两算一斤。我个人认为这个说法是靠谱的。
- u7 @+ |8 |+ q- v1 a: {
, E' U: X3 F1 n. u; L; f) w! |算盘虽然不用了,但是,我们可以通过算盘来理解进位的概念。我们以上面一个珠子,下面四个珠子的日本算盘为例。/ E0 O' T" X/ y9 o9 n; T! N4 x0 V5 }

1 d6 y/ t+ q9 I) R
计算机原理(二进制) unnamed.jpg
3 W1 }# y9 s+ ^8 u0 F
当我们要输入9的时候,在最后面的一栏,使用上面一个珠子,下面四个珠子,如果输入数字10,只能使用倒数第二位的一个珠子,也就是所谓的逢9进1。如果我们使用二进制算盘,每一栏只需要一个珠子,因此,只要表示超过数字1,就进一位。所以,当有进位的困扰的时候,心里想一下算盘就好了。" W4 g! @1 t0 ^: {. w" v

3 g2 S6 G% {; i5 c4 P- L: b二进制对计算机来说,尤其是我做的这个系列,使用继电器来构造一个计算机,只要有电流通过就是1,没有电流通过就是0。因此,这样对计算机来说,使用二进制很简单,但是,对人类来说,二进制的长度太长了,增加的速度太快,并不容易读,为了解决这个问题,每四个二进制组成一组,这样可以组成八进制或者十六进制,从某种意义上来说,八进制和十六进制,纯粹是为了满足人类的可读性,对计算机来说,都是二进制。
, X" _' T# z. w7 N3 I( ~  }& Q' {, u+ x7 d) }9 \5 c" x0 ]
在1950年左右,一个美国数学家意识到二进制的重要性,这个数学家的名字叫约翰•威尔德•特克,他决定给二进制起一个名字,在此之前二进制的英文单词是binary digit。这是两个单词,这个数学家想起一个更短一点的名字,在选定了好几个名字以后,最终选择了bit这个单词,这个单词只要三个字母,最终也证明了这个数学家的眼光,bit这个单词可以入选上世纪最重要的单词之一。另外,也有人说这个名字是信息论的提出者香农命名的bit,这两种说法都有,我也不知道哪个是真的,所以,留给有考据癖的各位自己去考据吧,考据好了,告诉我一声。
/ E" p  n' G( \  c' S% [+ n1 Q0 \, T& O- F% b8 T
五、bit的意义
) \2 O( R: c+ @& h. Y, B$ n' a0 h( Q# U$ o( O
bit到底有什么意义呢?当我们发明一个单词的时候,通常要有某个特殊的意义。在计算机中,比特的意义是信息的最小单位,1比特在计算机中是最小的信息量,也就是说,在计算机上,我们不能传播小于1比特的信息。比特传播的信息非常小,如果要传播更多的信息,就需要更多的比特。
- n& v  _; ~8 ]3 A) @3 T& a2 s/ S/ V0 y8 `1 [4 G; \4 k
那什么是信息呢?你追个女朋友,她答应或者不答应是一种信息;今天有雾霾或者没有雾霾也是一种信息;这种信息是可以通过计算机传播的,因为这种信息是非此即彼。还要一种信息是没法通过计算机来传播的,尤其是情绪,比如说,女朋友今天的心情,你说好吧,又不太好,你说不好吧,又还可以。, Q7 R2 q& m" l" ]; H
8 p/ u6 p1 h/ J* s, i& c
这种信息不是非此即彼的,电脑中无法表示这种状态,女朋友的脾气嘛,一会儿好,一会儿坏。这种信息对我们人类至关重要,但是,使用计算机的确非常难以表示这种状态。所以,至今为止,不管人工智能如何发展,我们人类还是没有和计算机建立起某些浪漫的关系。因为二进制的计算机目前只能表示出来确定的状态,不会撒娇,所以,一点也不可爱。
- ^2 @! T; [9 K0 s/ P
/ T5 I* x' H  ~9 w+ \$ A也就是说,如果我们无法使用文字,图画或者声音来表示某种事物或者信息,那么我们也没办法用计算机表示出这种信息。比如说,你犯了错误,你女朋友一个犀利的眼神,让你后背发凉,这个犀利的眼神,无法用文字,也无法用语言,更无法用图片表示出来,这种的确存在,而又尽在不言中的信息,计算机无法搞定。, _2 y+ ~4 A9 g( Z) S" I4 r6 t

" `  }4 G; j9 |$ g/ f所以,我对人工智能在某些特定的领域超过人类,没有任何怀疑,如果说人工智能全方位超过人类,我是有怀疑的。计算机在一些确定的领域,尤其是非黑即白的领域,比如围棋,象棋领域,还有一些游戏领域,比如说踢FIFA足球游戏,如果调成难度很高的话,实际上很难赢电脑,这也算是人工智能的一种。只是电脑踢球能赢了人类,没引起关注,由于围棋以及Google的阿尔法狗才觉得人工智能要翻天了。
. e$ X  p7 X0 ^* N! o. T) j
9 F2 [/ a8 t3 J( O- i' T- W8 z六、人工智能% [- X2 o& B- ]

1 o% Z$ C$ V$ d' Z( O) N' f既然谈到这里,我就多说一点人工智能,显然今天说这个话题,有点落伍,因为Google的AlphaGo以及不是热点了。其实Google的AlphaGo是收购的一个公司,这个公司叫DeepMind公司,是搞深度学习的。深度学习也不算特别前沿的科技,他有一个名字叫人工神经网络,如果年龄比较大的话,肯定听说过这个名字,人工神经网络,一个被抛弃冷落了很多年的技术。
0 x+ @5 i0 V( }' H" T! x5 y/ ^! c, }1 i8 R
这个人工神经网络技术在80年代是热点,90年代被各大研究机构以及各个大学抛弃。所以,正经的名牌大学,根本不怎么研究这玩意。因此,现在人工神经网络改名叫机器学习以后,并且突然热门以后,我们就会发现一个神奇的现象,最热门的热点,不是在美国,而是在加拿大,比如多伦多大学,蒙特利尔大学,这些游离与著名与非著名大学的那种学校,主要的那些著名大学,根本没有研究这种东西的,感觉落后了啊。7 B' Q, t$ {. B& ?0 w
+ J$ g0 a; V6 Q. p+ G, |8 |0 c5 D1 H
让人工神经网络咸鱼翻身的转折点是一篇论文,主要是用来识别手写字母的,当时主流算法的准确率是98.6%,然后一个计算机科学家使用深度置信网络,这是一种神经网络,把准确率提高到98.75%,一下子就超过了主流的SVM算法,然后大家才又开始关注人工神经网络。现在人工神经网络已经在语音识别,包括苹果的siri还有微软的小冰,亚马逊的echo,这些都是深度学习,还有图像识别等领域大放异彩。: e- H' b" `) G/ m! n1 g

" f+ ^7 ?2 [3 l5 B% L* G! q以后怎么样,我当然肯定是不知道的,搞不好某一天被某个算法拉下马也是很有可能的。比较深度学习就是这么被冷落了十几年,突然又开始红起来的。
+ A* @3 L3 V+ h0 t) P$ X3 U4 _" |5 _& |7 c
七、我的一些胡思乱想
2 n1 O5 C, [, h* Z% I
# @: \5 u5 R1 J; M2 t8 \. D9 Y人工智能这个东西,我其实一直很关注的。人类这个物种,其实所有人的预测都不怎么准,唯一能提高命中次数的方法就是每天多预测几个事情,然后总有一个两个能预测准确,瞎猫碰到死耗子也能蒙对几个。暂时我们先不管人工智能,先看看其它的领域,都是科学领域吧。
! M# J. t) p' N+ L; `/ v
/ {5 A# H2 N: L6 ^' R上个世纪,人类造出了原子弹,还把人送到月球上,然后乐观的预测家就说,再过50年,核能驱动的汽车满大街跑,50年内火星上移民不是梦。悲观的预测家则另外一套说辞,完蛋了,练核弹都造出来了,第三次世界大战肯定是互相扔核弹,人类肯定要灭绝了。现在早就超过50年过去了,我们再来看看这两个阵营的预测,都错的十万八千里。" a0 z  b" D" A
5 ^( Z4 A2 Y/ x2 O3 X: Y
乐观者说的核动力汽车满大街跑的景象肯定没出现,别说核动力汽车,我们现在造个汽车,还断轴,不是前轴断就是后轴断,还得弄一块铁板,打个补丁来解决问题。悲观者说世界末日来了,其实人类就使用了两次核弹,都给了日本。如果想灭绝人类,估计还得靠老朋友金三胖,这个最有出息的80后每天就知道放炮打炮。; @6 ]) h" J) r# h: _$ e4 q

- O" d, z: G& C  Z. H- |同样是上个世纪,物理学突飞猛进,一个接一个的理论接踵而至,相对论量子力学一个接一个的出现,乐观者也是很高兴的预测,大统一理论近在咫尺了,结果现在也没搞定。去年还是前年,有个荷兰的科学家提出了墒增理论来加强爱因斯坦的广义相对论,至于这个理论正确不正确我不知道,起码证明了目前还没有搞定大统一理论,预言家又再次乐观过头了。1 V5 t! a9 w/ L: ?0 l8 `. C

5 h. M2 \5 D* i( y- M6 t墒增理论很神奇,墒永远都是增大的,永远增大,不会减小,这个广告词可以当男科医院的广告词,墒增男科医院,永远变大,不会缩小。以后有钱了,我打算注册一个男科医院,就叫墒增男科医院。6 i4 l) j2 j; _( E5 |

( l) e9 i! g$ b( J" X% _2 x换到人工智能这个方面,乐观者说,马上了,奇点临近,人类赶紧准备准备后事,马上就没有人类啥事儿了。这个观点现在是主流观点,因为这个观点很吓人,尤其是国外有个博客叫wait buy why,这个博客上写了关于人工智能的一篇文章,然后我觉得国内基本上所有的观点都是这篇博客还有《奇点临近》那本书里的。
& ^' f8 p5 c/ L- \5 F/ S4 a
/ j7 I/ `. z: o5 a: h! r这个是主流的观点,就是人工智能马上超越人类。我个人觉得,不能太乐观啊。因为核能汽车我们没有见过,再过50年也够呛。大统一理论我们也看不到,其实物理领域,已经差不多停滞了五六十年了,还是不要太乐观的好,最被看好弦理论也没啥突破性的发展。最近看新闻说,谷歌公司的无人驾驶汽车项目已经接近取消了,按照谷歌一贯的原则,很多都是宣传的天花乱坠,最后搞的不声不响就砍掉,比如谷歌眼眼镜,还有组装汽车项目,还有通过气球上网项目,还有每一两年出一个聊天软件项目,最近的最震撼的就是谷歌的自动驾驶项目。
5 M  e* C" U# y0 @" n1 f) `; [3 X+ L1 N" H) ^5 K* ^1 @
要知道,谷歌当时宣传的,以及很多媒体跟风的,说这玩意比人开的好,显然,应该是没达到目的。否则,干嘛不量产,而是选择取消项目呢?只留下乐视自动驾驶汽车一路狂奔了…9 ]% i: I' B- N! o( H  {

* B' ^3 Y) t) M7 S( E5 q- c" _如果我们有了达到甚至超越人类的人工智能,她们会不会是个有趣的家伙。通过二进制,做出会下棋的软件没什么问题,只是,通过二进制,能不能模拟出含情脉脉的眼神。这件事情,我经常纠结。而且也一直没有答案。
, e  S* e& U$ q! ^  r1 Q) p2 j2 @
反正,我现在碰到有人自称是搞人工智能和大数据的,我一般认为这个人是个骗子,对这两个行业的人,我狭隘的思想就是对他们做有罪推定。尤其是现在经常会出“中国人工智能创新百人榜”和“中国大数据创新百人榜”,然后上面列出100个牛人,让我想起了武侠小说里的平湖百晓生弄的那个《兵器谱》,非常的不靠谱,兵器谱排名靠前的,都是被排名靠后的给弄死了。
& m5 d) D% p$ M- q7 y# y& l5 Q0 o9 b+ m7 N" {- M
上一篇
下一篇

0猫小蛮0 「初入古黑」 2020-3-31 20:03 |显示全部楼层

这个用户很懒,还没有填写自我介绍呢~

作为新人,在论坛不敢大声说话,也不敢得罪人,只能默默地顶完贴转身就走,不求深藏功与名,只求前排混脸熟
您需要登录后才可以回帖 登录 | 免费注册  

本版积分规则

快速回复 返回列表