计算机中的数据是以二进制存储,但是日常使用的数据为十进制,除了十进制还有八进制和十六进制。它们之间存在一定的转化关系。
1、数制间转换
一个数据可以有不同的表现形式,比如:
1.1、十进制转二进制
十进制转其他进制可以使用短除法,除以进制数,保留余数,继续拿上除以进制数,直到商位0,将余数逆序排列。
也可以使用位置加权法,使用二进制位上的权重进行拼接。
1.2、二进制和十六的转换
2、二进制权运算
2.1、算术运算
在CPU内部,有PSW(处理器状态字寄存器-REG).
2.2、逻辑运算
与 AND DST,SRC 全1为1,有0则0 --- 将DST某些位置0,其他位不变
或 OR DST,SRC 有1则1,全0为0 --- 将DST某些位置1,其他位不变
异或 XOR DST,SRC 相同为0,不同为1 --- 将DST某些位取反,其他位不变
非 NOT DST 0变1,1变0 ---- 将DST所有位取反
3、数据的表示
3.1、有符号数用补码表示
计算机有符号数用补码表示。
计算机只有加法器,没有减法器,因此12-3计算实质上是12+(-3),因此要区分正数和负数存储。
对于有符号的数,使用空间所有位的最高位作为符号位,0为1,1为负。
比如:char a = 8.存储为:00001000B,char型为8位,正数符号位为0
比如:char b=-8;原码为:10001000B,char型为8位,负数符号位为1.
反码为:11110111B 保持符号位不变,其他位取反
补码为:11111000B 反码+1
最终存储到计算机里面的是补码:11111000B.
3.2、十进制数用BCD码表示
1位十进制数是0~9,10个数据,可以使用4位二进制表示所有的十进制数。
1、组合BCD数
组合BCD数:一个字节存储2个BCD码
例如: 56存储一个字节8为,可以使用高四位0101表示5,低4位0110表示6。
01010110 --- 表示两个BCD数,可以成为组合BCD数或者压缩BCD数。
2、分离BCD数
分离BCD数:1个字节的底为存储1为10进制数,用另外一个字节的第四位存储另外一位十进制数。