2.1用二进制数表示计算机信息的原因
IC的所有引脚,只有直流电压0V或5V 两个状态。也就是说,IC的一个引脚,只能表示两个状态。
计算机处理信息的最小单位——位,就相当于二进制中的一位。位的英文bit是二进制数位(binary digit)的缩写。
二进制数的位数一般是8位、16位、32位……也就是8的倍数,这是因为计算机所处理的信息的基本单位是8位二进制数。
8位二进制数被称为一个字节。字节是最基本的信息计量单位。位是最小单位,字节是基本单位。内存和磁盘都使用字节单位来存储和读写数据,使用位单位则无法读写数据。因此,字节是信息的基本单位。(1字节=8位)
用字节单位处理数据时,如果数字小于存储数据的字节数(=二进制数的位数),那么高位上就用0填补。
2.2什么是二进制数
十进制数39的各个数位的数值,并不只是简单的3和9,这点大家应该都知道。3表示的是3×10=30,9表示的是9×1=9。这里和各个数位的数值相乘的10和1,就是位权。数字的位数不同,位权也不同。第1位(最右边的一位)是10的0次幂 (=1),第2位是10的1次幂(=10),第3位是10的2次幂(=100)
构成数值的各数位的数值和位权相乘后再相加的结果。
基数:数值的表现方法,进位计数制中各数位上可能有的数值的个数。
位权的思考方式也同样适用于二进制数。即第1位是2的0次幂(=1),第2位是2的1次幂(=2),第3位是2的2次幂(=4), ……,第8位是2的7次幂(=128)。
“〇〇的××次幂”表示位权,其中,十进制数的情况下〇〇部分为10,二进制数的情况下则为2。这个称为基数 。十进制数是以10为基数的计数方法,二进制数则是以2为基数的计数方法。
“〇〇的××次幂”中的××,在任何进制数中都是“数的位数-1”。即第1位是1- 1=0次幂,第2位是2- 1=1次幂,第3位是3-1=2次幂。
2.3移位运算和乘除运算的关系
移位运算:指的是将二进制数值的各数位进行左右移位(shift=移位)的运算。移位有左移(向高位方向)和右移(向低位方向)两种。在一次运算中,可以进行多个数位的移位操作。
<<这个运算符表示左移,右移时使用>>运算符。<<运算符和>>运算符的左侧是被移位的值,右侧表示要移位的位数。
左移后空出来的低位要进行补0操作。不过,这一规则只适用于左移运算。
移位操作使最高位或最低位溢出的数字,直接丢弃就可以了。
十进制数左移后会变成原来的10倍、100倍、1000倍……同样,二进制数左移后就会变成原来的2倍、4倍、8倍……反之,二进制数右移后则会变成原来的1/2、1/4、1/8……
2.4便于计算机处理的“补数”
二进制数中表示负数值时,一般会把最高位作为符号来使用,因此我们把这个最高位称为符号位。符号位是0时表示正数,符号位是1时表示负数。
为了获得补数,我们需要将二进制数的各数位的数值全部取反 ,然后再将结果加1。例如,用8位二进制数表示- 1时,只需求得1,也就是00000001的补数即可。具体来说,就是将各数位的0取反成1, 1取反成0,然后再将取反的结果加1,最后就转化成了11111111
取反:把二进制数各数位的0变成1,1变成0。
补数求解的变换方法就是“取反+ 1”。
将二进制数的值取反后加1的结果,和原来的值相加,结果为0。
2.5逻辑右移和算数右移的区别
右移有移位后在最高位补0和补1两种情况。当二进制数的值表示图形模式而非数值时,移位后需要在最高位补0。类似于霓虹灯往右滚动的效果。这就称为逻辑右移。
将二进制数作为带符号的数值进行运算时,移位后要在最高位填充移位前符号位的值(0或1)。这就称为算术右移。
如果数值是用补数表示的负数值,那么右移后在空出来的最高位补1,就可以正确地实现1/2、1/4、1/8等的数值运算。如果是正数,只需在最高位补0即可。
以8位二进制数为例,符号扩充就是指在保持值不变的前提下将其转换成16位和32位的二进制数。
2.6掌握逻辑运算的窍门
算术运算:是指加减乘除四则运算。
逻辑运算:是指对二进制数各数字位的0和1分别进行处理的运算,包括逻辑非(NOT运算)、逻辑与(AND运算)、逻辑或(OR运算)和逻辑异或(XOR运算 )四种。
逻辑非:指的是0变成1、1变成0的取反操作。
逻辑与:指的是“两个都是1”时,运算结果为1,其他情况下运算结果都为0的运算。
逻辑或:指的是“至少有一方是1”时,运算结果为1,其他情况下运算结果都是0的运算。
逻辑异或:指的是排斥相同数值的运算。“两个数值不同”,也就是说,当“其中一方是1,另一方是0”时运算结果是1,其他情况下结果都是0。不管是几位的二进制数,在进行逻辑运算时,都是对相对应的各数位分别进行运算。
【真值表】如果将二进制数的0作为假(false)、1作为真(true)来考虑