<<编码:隐匿在计算机软硬件背后的语言>>

总的来说是一本不可多得的好书,适合用来科普或者作为cs或者ee专业低年级的先导课(读的时候我就在想,如果我是大一读的这本书该多好,艹),刚开始没有选用抽象的二极管而是用了继电器来阐述(突然想起bug一词就是因为一只飞蛾卡住继电器)

可惜后面没时间仔细看,快速过了一遍

我是*b

image-20231118195256519

当时看见这两个图懵逼了一下,再看一眼就会发现我是*b,这不是摩根定律吗

$$\overline{A}\times\overline{B}=\overline{A+B}$$

$$\overline{A}+\overline{B}=\overline{A\times B}$$

如何实现减法

减法里一个麻烦的点就是借位操作

先看一个十进制的例子

image-20231118202101855

先用最大值减去减数在加上被减数,再+1-1000来减去这个最大值避免借位操作

看一个二进制的例子

image-20231118202733589

$$(1111 1111 - 1011 0000)$$避免了借位,这个也就是求反码的相反数的操作,毕竟反码加起来全为1嘛

只需要用几个反向器就可以完成

image-20231118204321473

通过异或门一端为0来控制输出原本输入,为1输出是输入取反后的

image-20231118204500282

$$(1111 1111 - 1011 0000)+1$$ 各位取反加一已经有补码的味道了,但是现在我们还没有补码的概念,还没有利用最高位溢出,而是直接减去1 0000 0000

image-20231118204107259

有了补码也就不用设计减法器了

反馈与触发器

书里说了一个边沿触发的d触发器

image-20231119141647975

可以用来做分频

image-20231119142105107

当我们这样连接的时候

image-20231119142141983

就是一直分频嘛

image-20231119142230105

我当时是没有想到和二进制关系的,直到把这个图顺时针旋转90°

image-20231119142552451

这种以1/2分频确实和二进制有着天然的关系,同时观察二进制每一列,变化周期都是和图中一样的(最左边每8个0变换为1,最右边每1个0变换为1)

RAM

image-20231121201214337

一个触发器可以让我们存储1bit的数据,通过和译码器和选择器就可以构成一个8x1的ram

image-20231121201350018

8x1不同方式连接可以得到8x2或者16x1

image-20231121212957056

自动化

有了存储设备,有了时钟,我们就可以自动化操作,设计一下指令集,用一个存储器存储代码,一个存储数据,在时钟的指挥下,完成取指 译码 执行 写回 (好吧,我承认我是站着说话不腰疼)