在C,JAVA等高级语言编写的程序中,数值,字符串和图像等信息在计算机中都是以二进制数值的形式来表现的
2.1 用二进制表示计算机信息的原因
计算机内部是由 IC(分数字IC模拟IC) 这种电子部件构成的,CPU和内存也是IC的一种。大部分IC的所有引脚,只有直流电压0v和5v两个状态,也就是说,IC的一个引脚只能表示两个状态
IC这个特性决定了计算机的信息数据只能用二进制数来处理,由于一个引脚只能表示两个状态,所以二进制的计数方式变成了0,1,10,11,100这种形式
计算机处理信息的最小单位是位 bit,相当于二进制中的一位。计算机中处理信息的基本单位是8位二进制数,即字节,1字节等于8位。内存和磁盘都使用字节单位来存储和读写数据
用字节处理数据时,如果数字小于存储数据的字节数,那么最高位补0。奔腾是32位微处理器,它一次可以处理32位,4个字节的信息
程序中,即使使用十进制数和文字等记述信息,在编译后也会转化成二进制数的值,计算机内部所有信息都用二进制数处理。对于用二进制数表示的信息,计算机不会区分它是数值,文字,还是某种图片的模式,而是根据编写程序的人对计算机发出的指示来进行信息的处理(运算)
如像00100111这个二进制数,可以视为数值进行运算,也可以视为 ‘ 单引号显示在显示器上,具体进行何种处理,取决于程序的编写方式
2.2 什么是二进制数
将二进制数转化成十进制数,只需要将二进制数的各数位的值和权位相乘,然后将相乘的结果相加即可。数值表示的就是构成数值的各数位的数值和权位相乘后再相加的结果
2.3 移位运算和乘除运算的关系
移位运算指的是将二进制数值的各数位进行左右移动,有左移和右移两种,移位后最高位或最低位溢出的数字直接丢弃,空缺视情况补0或1
二进制数左移会变成原来的2,4,8倍,右移会变成原来的1/2,1/4,1/8.所以移位操作可以在计算机中代替乘法和除法
2.4 便于计算机处理的“补数”
二进制数中表示负数值时,一般会把最高位作为符号来使用,因此将最高位称为符号位,符号位为0表示正数,为1表示负数
计算机做减法运算时,实际上真正运算的是加法,用加法来实现减法。补数就是用正数表示负数。获得补数就是将二进制的各数位的数值全部取反,再将结果加1
2.5 逻辑右移和算数左移的区别
只有右移时才必须区分逻辑位移和算术位移。左移时,无论是逻辑左移还是算术左移,都只需要在空出来的低位补0即可
2.6 逻辑运算
计算机能处理的运算,大体上分为算术运算和逻辑运算。算术运算指加减乘除四则运算,逻辑运算指对二进制数各数字位的0和1分别进行处理,将数值处理为单纯的0和1的罗列