目录
一、数制转换:
1.十进制数转换为二进制数:
方法:除 2 取余法(整数部分)、乘 2 取整法(小数部分)。例如,将十进制数 10 转换为二进制数,用除 2 取余法,10 除以 2 商 5 余 0,5 除以 2 商 2 余 1,2 除以 2 商 1 余 0,1 除以 2 商 0 余 1,从下往上取余数得到二进制数 1010。
2.二进制数转换为十进制数:
方法:位置加权法。即每一位上的数字乘以该位的权重(基数的幂次方),然后相加。例如,二进制数 1101 转换为十进制数,计算过程为:
1*2^3+1*2^2+0*2^1+1*2^0=8+4+0+1=13。
3.十六进制数与二进制数的相互转换:
方法:每一位十六进制数对应四位二进制数。例如,十六进制数 A5 转换为二进制数为 10100101;反过来,二进制数 11010110 转换为十六进制数为 D6。
4.十六进制数与十进制数的相互转换:
方法:先将十六进制数转换为二进制数,再将二进制数转换为十进制数。例如,十六进制数 3A 转换为十进制数,先将 3A 转换为二进制数为 00111010,然后用位置加权法计算十进制数为
0*2^7+0*2^6+1*2^5+1*2^4+1*2^3+0*2^2+1*2^1+0*2^0 =58。
二、算术运算:
运算规则:在进行二进制数的算术运算时,要考虑字长(8 位或 16 位等)。例如,8 位二进制数的运算范围是 -128 到 127,如果超出这个范围就可能会产生溢出。
举例:计算两个 8 位二进制数 01100001 和 01011001 的加法,结果为 10111010。但对于 8 位有符号数来说,因为最高位是符号位,真正能用于表示数值大小的只有 7 位,而这个结果超出了 7 位所能表示的范围,就产生了溢出错误。
三、逻辑运算:
1.与运算(AND):
规则:对应位都为 1 时,结果位才为 1,否则为 0。
举例:对二进制数 1010 和 1100 进行与运算,结果为 1000。因为第 1 位和第 3 位都是 1,所以这两位的结果为 1,其他位至少有一个 0,所以结果为 0。
2.或运算(OR):
规则:对应位只要有一个为 1,结果位就为 1,只有当两位都为 0 时,结果位才为 0。
举例:对二进制数 1010 和 1100 进行或运算,结果为 1110。因为第 1 位、第 2 位、第 3 位中至少有一个数在该位上为 1,所以结果相应位为 1。
3.异或运算(XOR):
规则:对应位不同时,结果位为 1,相同时为 0。
举例:对二进制数 1010 和 1100 进行异或运算,结果为 0110。第 2 位都是 0,所以结果位为 0;第 1 位、第 3 位、第 4 位不同,所以结果位为 1。
4.非运算(NOT):
规则:对每一位取反,1 变为 0,0 变为 1。
举例:对二进制数 1010 进行非运算,结果为 0101。
四、有符号数的表示方法及溢出问题:
1.原码:对于正数,原码就是其本身的二进制数;对于负数,原码为符号位是 1,其余位是该数绝对值的二进制表示。例如,正数 5 的原码是 00000101,负数 -5 的原码是 10000101。
2.反码:对于正数,反码与原码相同;对于负数,反码是除符号位以外,其余数取反。例如,正数 5 的反码是 00000101,负数 -5 的反码是 11111010。
3.补码:对于正数,补码与原码、反码相同;对于负数,补码是反码加 1。例如,正数 5 的补码是 00000101,负数 -5 的补码是 11111011。
4.溢出问题:当两个有符号数进行运算时,如果结果超出了该数据类型所能表示的范围,就会产生溢出。例如,8 位有符号数的运算结果超出了 -128 到 127 的范围,就发生了溢出。
五、BCD 码:
1.概念:BCD 码是一种用二进制编码表示十进制数的方法,程序员之间约定俗成的表示方式。
2.表示方式:分为组合(压缩)BCD 码和分离(非压缩)BCD 码。例如,十进制数 56 的组合 BCD 码表示为 01010110(将 5 和 6 分别用 4 位二进制数表示后组合在一起);分离 BCD 码表示为 00000101 和 00000110(分别用两个字节表示 5 和 6)。
3.调整指令:在进行 BCD 码的运算时,需要进行调整。例如,加法运算后结果需要进行 “加 6 调整”(0110B),减法运算后结果需要进行 “减 6 调整”。
六、ASCII 码:
1.概念:计算机中的字符均用 ASCII 码来表示。
2.编码规则:字符的 ASCII 码值是唯一的,例如,‘0’的 ASCII 码值是 30H,‘A’的 ASCII 码值是 41H,‘a’的 ASCII 码值是 61H 等。最高位通常是 0(在某些扩展的 ASCII 码中可能有不同)。