我们所说的这个单片机是多少位的,其实说的是的ALU的位数,8位单片机的ALU是8位的。
A、B是它的数据输入,Y是输出
8位的ALU一次性最多可以处理8位数据。
比如计算两个8位二进制相加,
只需要给A和B输入两个8位二进制数,它的输出端就能计算这两个8位二进制相加的和。
而32位单片机的ALU是32位的,一次可以计算两个32位二级制数相加。
那8位机可以进行16位或者32位的计算吗?
这也是可以的,但是相对麻烦一些,比如当我们对8位单片机编程时,所定义的int型数据就是16位的,那么8位机就需要把这个16位数分成两个字节,分别计算。
计算32位数据也一样,在8位机当中,我们定义的long int整型数据其实是32位的,这样8位单片机就得把32位数据分成4个字节来分别计算。
如果是32位单片机,则它的ALU是32位的,计算32位数据只需要一次运算就完事了。
这就是32位单片机的优势所在。
而对于计算8位数据,8位或者32位单片机在速度上几乎差不多。
ALU和其它部件的数据传输靠的是数据总线,所以我们一般的说法是,8位单片机中的8位指的是数据总线的位宽是8位。
但其本质上还是它的ALU一次性最多能处理多少位数据。
数据总线是传输数据的,比如数据总线传输的是0101 0000,那么RAM的某一个字节就会存储0101 0000,但是RAM存储器有很多个字节,我们怎么确定要给哪一个字节存储数据呢?
这就得靠地址总线了,它可以指定给RAM存储器的哪一个字节存储数据。