<<编码:隐匿在计算机软硬件背后的语言>>
总的来说是一本不可多得的好书,适合用来科普或者作为cs或者ee专业低年级的先导课(读的时候我就在想,如果我是大一读的这本书该多好,艹),刚开始没有选用抽象的二极管而是用了继电器来阐述(突然想起bug一词就是因为一只飞蛾卡住继电器)
可惜后面没时间仔细看,快速过了一遍
我是*b
当时看见这两个图懵逼了一下,再看一眼就会发现我是*b,这不是摩根定律吗
$$\overline{A}\times\overline{B}=\overline{A+B}$$
$$\overline{A}+\overline{B}=\overline{A\times B}$$
如何实现减法
减法里一个麻烦的点就是借位操作
先看一个十进制的例子
先用最大值减去减数在加上被减数,再+1-1000来减去这个最大值避免借位操作
看一个二进制的例子
$$(1111 1111 - 1011 0000)$$避免了借位,这个也就是求反码的相反数的操作,毕竟反码加起来全为1嘛
只需要用几个反向器就可以完成
通过异或门一端为0来控制输出原本输入,为1输出是输入取反后的
$$(1111 1111 - 1011 0000)+1$$ 各位取反加一已经有补码的味道了,但是现在我们还没有补码的概念,还没有利用最高位溢出,而是直接减去1 0000 0000
有了补码也就不用设计减法器了
反馈与触发器
书里说了一个边沿触发的d触发器
可以用来做分频
当我们这样连接的时候
就是一直分频嘛
我当时是没有想到和二进制关系的,直到把这个图顺时针旋转90°
这种以1/2分频确实和二进制有着天然的关系,同时观察二进制每一列,变化周期都是和图中一样的(最左边每8个0变换为1,最右边每1个0变换为1)
RAM
一个触发器可以让我们存储1bit的数据,通过和译码器和选择器就可以构成一个8x1的ram
8x1不同方式连接可以得到8x2或者16x1
自动化
有了存储设备,有了时钟,我们就可以自动化操作,设计一下指令集,用一个存储器存储代码,一个存储数据,在时钟的指挥下,完成取指 译码 执行 写回 (好吧,我承认我是站着说话不腰疼)