当我们学习JS时,我们将了解下一个操作。我们还经常看到源代码中的操作痕迹,例如React,TypeScript等,但永远不会在业务代码中写入。似乎离我们很远。
但是真的很远吗?
实际上并非如此。您编写的所有代码最终都将变成位操作,并且CPU实现的秘密隐藏在操作中。
让我们谈谈BIT操作与CPU之间的关系以及BIT操作在代码中的应用。
让我们首先了解晶体管。
以下是晶体管。它是一个晶体管,具有从一端的力量特征。
这个特征不是开关吗?
它类似于以下内容,但不需要手动开关,而是通过电源控制开关。
Kaihe Pass是1和0。这就是计算机世界的组成方式。
使用01,它可以构成一个逻辑电路,即由门或门,非室,异质或门组成的电路。
他们的电路符号就是这样:
跟随门:
或门:
非室:
不同或门:
他们如何在JS中表达?
和 &
或|
非 - ?
不同或 ^
它们是由三极管组成的逻辑电路的基本单元,可以实现基于0 1的逻辑。
什么逻辑?
1&0是0
1 |0是1
?1是0
0 ^ 0是0
它是否更熟悉,这里有所不同,或者:
不同或相同的是0,差异是1,即一个0和一个1要获得1,否则0是0
我们了解该位置是什么,逻辑电路是什么,逻辑电路可以做什么?
如果您可以做更多的事情,CPU不是大型逻辑电路吗?
例如,我们实施ALU操作员:
首先,实现该方法:
在二进制中,添加是不同的,因此我们不相信我们尝试它:
1和0、0和1想要添加到1,0、0、1和1是0,这不是什么不同吗?
当然,有必要处理该职位。可以通过操作获得该位置。例如,上面的四个仅为1和1,否则为0,为0。这被认为是适当的。
可以添加和进步位置。
测试加法器:
请注意,上述或不同或不同的逻辑电路,那么使用电路的上述代码不是吗?
通过增加,很容易获得还原设备:
将减法转换为相反的数字是不是减法吗?
至于为什么这是一个反词,它涉及原始代码逆代码补充。
因为1对应于-1和0?没有-0,所以少一个。因此,必须将一个添加到同一,即补充剂的“补充”,以及造成的丢失代码否-0。
实施额外的还原设备后,将可用乘法和删除方法,因为乘法不是多重加号?不是法律的减少吗?
这样,我们从位操作中实现了加法,减法和乘法。
与硬件相对应?也就是说,我们通过三极管实现逻辑电路,然后使用逻辑电路实现加法,减法和乘法。
上面的东西在CPU中称为Alu。算术逻辑单元可用于逻辑操作和算术操作。
并基于三极管,还可以存储0 1和其他目的以形成寄存器。
有了这些事情,我们可以实施CPU。
上帝不是惊人的。通过晶体管和位操作,我们可以制作CPU,尽管它需要数亿晶体管。
当然,我们只能理解这些含义的含义,我们还必须了解位操作的应用。
阅读了先前文件系统实施文章的朋友将知道硬盘将分为要使用的数据块,并且文件由多个数据块组成:
该文件将通过称为Inode的结构来记录哪些数据块:
然后,当我想保存文件时,您怎么知道哪些块可用?
只有两个怠速和非闲置状态,可以保存一个数字0和1,因此将记录在位图的结构中。
例如,当我存储第2和4号的图片时,位置图的相应位置将设置为1,否则为0。然后,当我需要存储文件时,从位图检查以了解哪些数据可以使用块。
记录位图的状态,并通过位操作来判断状态。MALL职业空间和高计算效率。
操作系统的水平是如此干燥,许多追求性能的图书馆都是如此干燥。
在源代码(例如React和Typescript)中,经常看到一个称为标志的东西。标志类似于我上面提到的位图,并通过一点识别状态。
例如,以下“ React”部分的源代码:
这是为了判断该纤维是否有XXX是否有放置或水合。
在打字稿的源代码中查看此代码:
?它是相反的状态,然后&是确定是否没有这种状态,然后将其设置为标志,这意味着此标志加上没有XX状态的徽标。
操作系统和出色的库用于操作,因为它们具有高性能,直接使用电路,并且存储空间很小。可以在我们的代码中使用吗?
是的,但是商业代码追求的是更多的维护。如果您编写上述打字稿类型的源代码的位置,那么以后接管的人不想杀死您。
CPU意识到电路通过晶体管的开关,即0和1,然后形成逻辑电路以进一步构成逻辑电路。逻辑电路可以实现构成alu的加法,减法和乘法。
因此,该位置是直接用电路,最高效率计算的,而其他操作最终将变成位操作。
操作系统文件系统的设计使用位图和位操作。React和TypeScript源代码还使用大量标志。但这并不意味着可以使用业务代码,因为业务代码仍然更为重要。
CPU的秘密隐藏在操作中,这不仅像令人眼花and乱的方法一样简单。