一、数制和码制
(一)数制
1.X进制:
十进制、二进制、八进制、十六进制:0~9,A(10),B(11),C(12),D(13),E(14),F(15)
2.转换:
(1)X-十转换:
(2)十-X转换:
计算 | 结果 | |
>1 整数部分 | D对X不断取余,直到商为0 | 逆序取余数 |
>2 小数部分 | D小数部分不断乘以X,直到没有小数部分 | 正序取每次计算后的整数部分 |
(3)二-十六转换:以小数点为起始,向左右两侧,将每四位二进制数看作一个十六进制数,计算出来落下即可。高位、地位不足四位的,都以0补足。
(4)十六-二转换:逆序上述过程(二-八和八-二即为三位,同理)。
(5)十六-十转换:十六->十 十->十六:十转二再转十六
(二)二进制算术运算
1.特点:四则运算都可以用“位移”+“加减”实现
第一步 | 第二步 | |
乘法 | 被乘数(或零)左移1位 | 被乘数(或零)与部分积相加 |
除法 | 除数右移1位 | 被除数或余数减去除数 |
2.反码、补码
原理 | 优缺点 | |
原码 | 符号位(1正0负)+二进制数 | (缺)减法时,需要先比较绝对值,使用比较绝对值和做减法两种电路 |
反码 | 符号位(1正0负)+原码(正数)/原码按位取反(负数) 表示: 定义: | (优)解决负数加法运算问题,将减法运算转换为加法运算,从而简化运算规则 |
补码 | 举例,4位二进制数补码的进位基数是16(10000),所以9(1001)的对模16的补码就是-7(-0111) 在舍弃进位条件下,减去某个数可以用加上它的补码来代替 故,对于有效数字(不包括符号位)为n位的二进制数N,其补码表示方法为: | - |
补码求法:
正数 | 补码==反码==原码 |
负数 | 补码==反码+1,即为,注意是n位全为1的二进制数 |
例.用二进制补码运算求10+13,10-13,-10+13,-10-13
分析:10+13、-10-13的绝对值为26,2^4<26<2^5,故选择有效数字n==5的二进制数,有效数字前加上符号位,即为6位二进制数。有效数字和符号位之间也可以进位,两个加数的符号位和来自有效数字最高位的进位相加,就是和的符号。
列竖式时候可以将符号位和有效数字分开一些写,更加直观。
(三)几种常用编码
1.十进制
8421码 | 余3码(8421+3) | 2421码 | 5211码 | 余3循环码 | |
0 1 2 3 4 5 6 7 8 9 | 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 | 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 | 0000 0001 0010 0011 0100 1011 1100 1101 1110 1111 | 0000 0001 0100 0101 0111 1000 1001 1100 1101 1111 | 0010 0110 0111 0101 0100 1100 1101 1111 1110 1010 |
权重 | 8421 | - | 2421 | 5211 | - |
特点 | (1)0-9、1-8、2-7、3-6、4-5互为反码 (2)若两个余三码相加正好等于十进制的10,则正好等于二进制的16,于是从高位自动产生进位信号 | 0-9、1-8、2-7、3-6、4-5互为反码 | 对应某种计数器,将在第六章学到ww | (1)变权码 (2)相邻两个代码之间仅有一位的状态不同 |
对“变权码”的理解:如果试图将每一个代码视作二进制数,并使它等效(代表)的十进制数与二进制值相等,则代码中每一位的1所代表的十进制数(权值)在各个代码中是不固定滴~
我的问题:为什么8421码+3正好是0-9、1-8、2-7、3-6、4-5互为反码?
2.格雷码
(以4位格雷码为例,从0000开始,每一位按照不同顺序循环变化) | 循环变化规律 |
最右位 | 0110 |
右二位 | 00111100 |
右三位 | 0000111111110000 |
最左位 | 0000000011111111(由于4位格雷码只有16个,所以最左边一位的状态只有半个循环) 我对此句的理解如图: |
优点:相邻两个代码之间只有一位发生变化(避免产生过渡噪声)
3.ASCII
共128个~大家一定很熟悉啦