1024专题 | 小学生:电流是怎么把指令和数字告诉CPU的呢?
“hello world”
作为世界上第一个出现的程序,
“hello world”一直被程序员们津津乐道,
编程语言千万种,hello world终不变。
(以上都是哪些编程语言?有奖竞猜开始)
不过话说回来,world辣么大,
为什么程序员们不去看看?
还不是因为这个:
为此,程序猿中的文艺细菌们还赋诗一首:
十年编程两茫茫,工期短,需求长。
千行代码,Bug 何处藏。
纵使上线又如何,新版本,继续忙。
黑白颠倒没商量,睡地铺,吃食堂。
夜半梦醒,无人在身旁。
最怕灯火阑珊时,手机响,心里慌。
也是非常贴切了。
“1024”节
说了那么多差点忘记主题,
今天是想跟广大小伙伴们说一句:
Hi,节日快乐啊!
啥?什么节?
当然是“我们永远不寂寞”的1024节了!
好吧世上本来并没有这个节,
过的人多了也就成了节。
不过这个日子该庆祝啥,
相信在座诸位都懂的:
当然是庆祝二进制了!
1024是一个整数嘛,
1023与1025之间的自然数。
1024=2^{{10}}(2的10次方)。
它同时是32的平方:32^{{2}}。
其二进制表示为:10000000000。
本来1024这种东西应该是数学家的玩具。
但是不幸我们有了电脑,
而电脑是基于二进制运行的。
所以这个“奇怪”的数字就变得人尽皆知了。
10月24日,
也就变成了中国“程序员”的共同节日。
二进制对于程序猿们的意义是什么?
嗯,在程序员们的眼中,世界上有10种人:
奇怪的二进制
然鹅,为什么计算机处理的信息
要用二进制数来表示呢?
这就要从计算机的内部构造说起了。
想必大家都知道,
计算机内部是由IC这种电子部件构成的。
IC,Integrated Circuit,集成电路。
IC有几种不同的形状。
有的像一条黑色蜈蚣,
在其两侧有数个乃至数百个引脚;
有的则像插花用的针盘,
引脚在IC内部并排排列着。
IC的所有引脚,
只有直流电压0V或5V两个状态。
也就是说:
IC的一个引脚只能表示两个状态。
IC的这个特性,
决定了计算机的信息数据只能用二进制数来处理。
由于1位(一个引脚)只能表示两个状态,
所以二进制的计数方式就变成了:
0、1、10、11、100…这种形式。
虽然二进制数并不是专门为IC而设计的,
但是和IC的特性非常吻合。
于是:
物理世界的1个引脚=1位(1bit)。
bit,是二进制数位(binary digit)的缩写。
位=计算机处理信息的最小单位。
二进制数的位数一般是8位、16位、32位……
也就是8的倍数,
8位二进制数=1个字节。
内存和磁盘都使用字节单位来存储和读写数据,
使用位单位则无法读写数据。
因此,字节是最基本的信息计量单位。
bit(位)是最小单位,
byte(字节)是基本单位。
于是:
8bit=1Byte,
1024Byte=1KB,
1024KB=1MB,
1024MB=1GB,
1024GB=1TB。
强行科普版
1024叔叔:大家见过电脑吗?
小学生:当然了!
1024叔叔:在哪里见过呢?
小学生:学校里就有。
1024叔叔:大家通常用电脑做什么呢?
小学生:画图或者上网。
1024叔叔:不错!
看来大家经常用电脑呀。
那么,大家知道电脑内部是怎么构成的吗?
小学生:不知道……
1024叔叔:那就让叔叔来告诉你们吧。
来,大家看这里!
小学生:这是什么呀?
1024叔叔:这个叫作CPU,是电脑的零部件。
正因为有了它,大家才能在电脑上画图和上网。
算术计算的时候也会用到哦。
电脑中有很多部件,
最重要的就是这个CPU。
小学生:咦,上面有好多昆虫一样的小脚(引脚)呢。
1024叔叔:不错,挺善于观察的嘛!
这个引脚会有电流通过。
小学生:通电后会怎么样啊?会发光吗?
1024叔叔:CPU不会发光。
但是,通过电流信号,
我们就可以给CPU发送指令或者传递数字信息等。
比如说,让电脑计算1+2的时候,
就要把进行加法计算的命令和1和2这两个数字传递给CPU。
小学生:电流是怎么把指令和数字告诉CPU的呢?
1024叔叔:不错不错,又注意到一个有意思的地方。
CPU的引脚有电流通过时,数值为1;
没有电流通过的时候,数值为0。
这是CPU里的规定。
咱们平时使用的是0~9这10个数字,
而电脑只用0和1这两个数字符号。
怎么样,是不是很有意思呀?
小学生:就用0和1,不会不够用吗?
1024叔叔:不会啊!咱们来数数看。
0、1、10、11、100、…、1010。
你看,还是够用的。
小学生:1的下一个是10(一零),
这好奇怪呀!
1024叔叔:(呵呵呵,马上就要讲到重点了)
不奇怪啊!这就是二进制数的计数方式。
咱们用0、1、2、3、…、9、10这样的顺序来计数,
数到9以后下一个就是10,这就是十进制数的计数方式。
电脑使用的是二进制数,用0和1来计数,
所以0和1的下一个数就是10了。
小学生:啊,不太明白呀……
1024叔叔:(啊啊,不妙啊……)
咱们换一种方式来考虑。
咱们还是用0~9的数字来计数。
但在遥远的宇宙边缘,
生活着只用数字0和1的外星人。
电脑就跟这个外星人差不多。
这样讲大家明白了吧?
小学生:???
1024叔叔:明白了吗?
小学生:嗯……
1024叔叔:回答得这么不干脆啊?
小学生:差不多……明白了吧。
正经版
程序员是什么?
从事程序开发、程序维护的专业人员。
程序是什么?
指示计算机每一步动作的一组指令。
程序由什么组成?
指令和数据。
例如,C语言“printf ("hello world"); ”
这个简单的程序中,
printf是指令,
" hello world"是数据。
程序是什么跑起来的?
通过机器语言与CPU“对话”。
机器语言是什么?
CPU能够直接识别和执行的语言。
使用C、Java等语言编写的程序,
最后都会转化成机器语言。
CPU是什么?
计算机的构成元件中,
根据程序的指令来进行数据运算,
并控制整个计算机的设备。
CPU由什么组成?
寄存器、控制器、运算器和时钟。
寄存器:可用来暂存指令、数据等处理对象,
可以将其看作是内存的一种。
控制器:负责把内存上的指令、数据等读入寄存器,
并根据指令的执行结果来控制整个计算机。
运算器:负责运算从内存读入寄存器的数据。
时钟:负责发出CPU开始计时的时钟信号。
CPU负责实现什么功能?
解释和运行最终转换成机器语言的程序内容。
整个过程怎么运作?
寄存器、控制器、运算器和时钟之间由电流信号相互连通。
程序启动后:
根据时钟信号,
控制器会从内存中读取指令和数据。
通过对这些指令加以解释和运行,
运算器对数据进行运算。
控制器根据运算结果来控制计算机。
所谓的控制,
就是指数据运算以外的处理,
主要是数据输入输出的时机控制。
比如内存和磁盘等媒介的输入输出,
键盘和鼠标的输入,
显示器和打印机的输出等,
这些都是控制的内容。
明白了吗?
嗯……
回答得这么不干脆啊?
差不多……明白了吧。
好的。
谨以此文,致敬“编程全世界”的程序员们。
去年今日2017.10.24:
▼