带妹来青岛了!

沉默王二

共 2395字,需浏览 5分钟

 · 2021-06-13

大家好,我是二哥呀!

五一的时候,带老婆、女儿、妹妹去了张家界和凤凰古城。这次端午节,我们一起来到了青岛。我妹说,要不是她这个哥哥带她出去看世界,她去过最远的地方除了三门峡市就是洛阳市了。

其实大学毕业去苏州之前,我去过的城市也仅有三门峡、平顶山、洛阳和郑州。直到现在,还不曾看到过海!

所以这次,来青岛的目的只有一个,就是看海。本来可以去连云港的,更近一些,不过心里更向往青岛一些,就多坐了两三个小时的车程。

洛阳是个三线城市,所以到青岛的飞机只有固定的几趟,昨天就没有班次,所以这次我们坐的动车。昨天中午 3 点多启程,到青岛已经晚上 10 点半了!

下了火车发现,10 点半的青岛竟然被浓雾笼罩着,能见度很低,这要是坐飞机,估计没法降落,还得打道回府。

洛阳这个时候已经热的一笔,气温逼近 40 度,青岛这里却冷的一笔。出车站后,旁边经过几个穿得不是很保暖的小姐姐,嘴里都在骂娘,冻得直哆嗦。

哈哈哈,不愧是沿海城市啊。

本来打算利用 7 个多小时的车程写一篇文章,回答一篇知乎的,结果看我妹在玩王者荣耀,没忍住,打了好些把!由于火车上信号差,所以我玩的是三对三的人机模式,结果我妹说我是“游戏黑洞”!这还不算,我老婆还在旁边补刀:“别玩了吧,看把你菜的!”

害,二哥当年可是玩过 Dota 的男人!

嗯,当时也菜得抠脚!好像在一个对战平台的分就没上过一千,常年处于新手的水平,队友直呼带不动。

这次玩王者也是一样,四五把匹配模式中,有三局是对方投降了。我不明所以,我妹说,“估计是你太菜了,对方不想和你玩!”

侮辱性极高,伤害性极强!

没办法,只好看书了!“书中自有黄金屋,书中自有颜如玉”,只好在书中寻找点快乐啦。这次带的是一本《程序是怎样跑起来的》。

本书在封皮上写了三句话:

  • 本书适合菜鸟程序员入门阶段;
  • 本书适合中级程序员查漏补缺;
  • 本书适合高手程序员向家人普及计算机知识。

哼,一二条都不适合我——王者荣耀都菜得抠脚了,这里必须得找回点场子。火车上我只看了前两章,我把我认为重要的知识点给大家梳理一下。

第一章,对程序员来说 CPU 是什么

从物理结构上说,CPU 就是中央处理器,相当于计算机的大脑,内部由数以亿计的 IC(集成电路)组成。

从功能层面来说,CPU 由寄存器、控制器、运算器和时钟组成。寄存器用来暂存指令,处理数据;控制器负责把内存上的指令、数据读入寄存器,并根据指令的执行结果来控制整个计算机;运算器负责运算从内存读入寄存器的数据;时钟负责发出时钟信号,时钟信号的频率越高,CPU 的运算速度越快!

拿 Java 语言中的 System.out.println("Hello World"); 这条语句来说,System.out.println 就是指令,Hello World 就是数据。不过,Java 是一门高级的编程语言,它最终会被编译解释为机器语言。

说到 CPU 就必须提一嘴内存,通常所说的内存指的是计算机的主存储器,负责存储程序和数据等,使用 DRAM(动态随机存取存储器)作为芯片,可以对任何地址的数据进行读写操作,但断电后内容会自动清除。

CPU 中的寄存器按照功能可以分为多种,包括:

  • 程序计数器,决定程序执行的流程。
  • 标志寄存器,存储运算处理后的 CPU 状态,第一个字节位、第二个字节位、第三个字节位的值为 1 时,分别表示运算结果为正数、零和负数。
  • 累加寄存器,存储执行运算的数据和运算后的数据。
  • 基址寄存器,存储数据在内存中的起始地址。
  • 变址寄存器,存储基址寄存器的相对地址。
  • 通用寄存器,存储任意数据。

虽然像 Java 这类的高级编程语言可以写出功能无比强大、业务无比复杂的程序,但最终都会被转换为 CPU 可处理的简单指令:

  • 数据转送指令,数据在 CPU、内存、外围设备之间的读写操作;
  • 运算指令,用累加寄存器执行算数运算、逻辑运算和位移运算;
  • 跳转指令,实现条件分支、循环等;
  • call/return 指令,方法的调用/返回方法调用前的地址

第二章,数据是用二进制数表示的

不管是 CPU 还是内存,都是由集成电路组成的,而集成电路就像是一条黑色蜈蚣(女生不要怕哈,形象生动的比喻而已)。

这些集成电路,都有很多引脚,但这些引脚只有两个状态,就是直流电压的 0V 和 5V,这也就决定了计算机的信息处理只能用二进制来处理。

二进制数有 8 位的、16 位的、32 位的、64 位的,但都是 8 的倍数,这是因为计算机所能处理的信息的基本单位是 8 位的二进制数,也就是一个字节。

程序中,即使是用十进制数和文字等表述的信息,最终都会转成二进制数。比如十进制的 39,用二进制数来表示就是 00100111,比如字母 A,用二进制数表示就是 01000001

二进制和十进制之间是怎么转化的呢?

其实很简单,就是将二进制数的各位的值与位权相乘后相加就可以了,还拿 39 和 00100111 来说。

  • 0*2^7=0
  • 0*2^6=0
  • 1*2^5=32
  • 0*2^4=0
  • 0*2^3=0
  • 1*2^2=4
  • 1*2^1=2
  • 1*2^0=1

2^7就表示 2 的 7 次方(幂),以此类推,加起来后就是 39。对于十进制 39 来说,其实也可以拆分:

  • 3*10^1=30
  • 9*10^0=9

加起来就是 39。只不过,十进制以 10 为基数,二进制以 2 为基数。

第二章里还有关于位移运算、补数、逻辑右移、算数右移、逻辑运算等这些重要的知识,就留到以后再和大家讲吧。因为我要吃饭了,吃完饭要去看大海了~哈哈

我是二哥呀,一个还没有见过海的 old man~

哼,别笑,我还没见过沙漠和草原呢~

(逃

浏览 15
点赞
评论
收藏
分享

手机扫一扫分享

举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

举报