DennyQi's Log

数据类型

数字逻辑

计算机并不神秘,它本质上只是一个物理工具。它的内部用高电平表示1,低电平表示0,从而实现对二进制的存储和运算。逻辑单元的基本要素是晶体管。

如今的大多数微处理器都是用金属氧化物半导体(MOS)实现。MOS管分为n-MOS管和 p-MOS管(三极管,和高中通用技术中学的一样)。同时由n-MOS和p-MOS组成的电路称为CMOS电路。CMOS电路可以实现与门、或门、非门,从而实现基本的逻辑运算。这类逻辑结构不具备记忆信息的功能,通常称为“组合逻辑结构”。

常见的组合逻辑结构有译码器,多路复用器和全加器。译码器是nn个输入2n2^n个输出的结构(二进制),所有输出中只有一个1其余都是0,它用来匹配不同的输入模式;多路复用器的功能是从多个输入信号中选择一个输出,而选择的依据是另一些输入,如果有nn个选择信号,就可以支持2n2^n个输入,1个输出;全加器是处理二进制加法的基本单元,二进制加法的每一步都是接受两个输入位和一个进位,输出一个位和一个进位,这三个输入和两个输出形成了一个真值表,实现这个真值表的组合逻辑结构就是全加器,一个8位二进制数的加法就可以用8个全加器首尾相接实现。

位运算

在存储二进制整数时,第一个难题是如何处理负数。一种方法是空出一个符号位,其余用绝对值表示。但是这种做法使得正数的二进制加法运算法则和带符号的二进制加法运算必须用不同的运算法则来实现的。解决这个问题的方法是使用补码,在补码中一个数的负数被定义为这个整数的二进制(比如8位)按位取反再+1,于是这样两个相反数相加必然为0了,这也就使得正数和负数遵循了相同的运算法则。

另一个难题是如何处理小数。计算机用浮点数来存储小数,这类似于二进制下的科学计数法,一位用以表示正负号,若干位用整数代表数字,再用一个整数表示幂指数,这样每个小数都可以被表述为x=±a×2bx=\pm a\times 2^{b}。其中,科学计数法要求小数点前只有一位有效数字, 而这个有效数字在二进制中只能是1,因此在计算机中是被省略的。