一、數制
常用的數制有二進制(Binary)、十進制(Decimal)、十六進制(Hexdecimal)和八進制(Octal)。感覺八進制不常用啊。。。
1.1 十進制→二進制
(64.03)10=(?)2
整數部分:
64/2=32——余0
32/2=16——余0
16/2 = 8——余0
8/2 = 4——余0
4/2 = 2——余0
2/2 = 1——余0
1/2 = 0——余1
從下往上為整數部分二進制結果1000000
小數部分:
0.03x2=0.06——整數部分0
0.06x2=0.12——0
0.12x2=0.24——0
0.24x2=0.48——0
0.48x2=0.96——0
0.96x2=1.92——1
0.92x2=1.84——1
0.84x2=1.68——1
0.68x2=1.36——1
0.36x2=0.72——0
從上到下為小數部分0.0000011110(精確到了小數點后10位有效數字)
因此(64.03)10=(1000000.0000011110)2
1.2 二進制→十進制
(101.011)2=(?)10
=22+0x21+20+0x2-1+2-2+2-3
=5.375
二、編碼與碼制
2.1 原碼、反碼和補碼
在數字電路中,十進制數字一般用二進制來表示,原因就是邏輯電路的輸出高低電平剛好可以表示二進制數的1和0。在二進制數前增加一位符號位即可區分數字的正負,
正數符號位為0,負數符號位為1,這種形式稱之為原碼。
正數的原碼、反碼和補碼都是自己。
負數的反、補碼規則如下:
原碼:1 1001(二進制增加符號位后的形式)
反碼:1 0110(符號位對應取反)
補碼:1 0111(反碼+1) //“+1”這一操作使得正負相加剛好溢出
正數+對應負數的補碼=0 !
2.2 常用編碼
8421碼、余3碼、2421碼、5211碼和余3循環碼都屬於十進制代碼。
8421碼(BCD碼):BCD碼的每一位上的1都代表一個固定的十進制數,分別為8、4、2、1,將其代表的數值相加就是8421碼對應的十進制數,屬於恆權代碼。
余3碼:(十進制碼+3),非恆權碼,首尾互為反碼。
2421碼:恆權碼,首尾互為反碼。
5211碼:恆權碼,分頻器中有作用?
余3循環碼:變權碼,格雷碼舍去前三個就是余3循環碼。
8421碼 | 余3碼 | 2421碼 | 5211碼 | 余3循環碼 | |
0 | 0000 | 0011 | 0000 | 0000 | 0010 |
1 | 0001 | 0100 | 0001 | 0001 | 0110 |
2 | 0010 | 0101 | 0010 | 0100 | 0111 |
3 | 0011 | 0110 | 0011 | 0101 | 0101 |
4 | 0100 | 0111 | 0100 | 0111 | 0100 |
5 | 0101 | 1000 | 1011 | 1000 | 1100 |
6 | 0110 | 1001 | 1100 | 1001 | 1101 |
7 | 0111 | 1010 | 1101 | 1100 | 1111 |
8 | 1000 | 1011 | 1110 | 1101 | 1110 |
9 | 1001 | 1100 | 1111 | 1111 | 1010 |
權 | 8、4、2、1 | 2、4、2、1 | 5、2、1、1 |
格雷碼(Gray Code)又稱循環碼。
從低位到高位變化的順序一次是0110, 00111100, 0000111111110000, 00000000111111111111111100000000 以此類推。
編碼順序 | 二進制代碼 | 格雷碼 |
0 | 0000 | 0000 |
1 | 0001 | 0001 |
2 | 0010 | 0011 |
3 | 0011 | 0010 |
4 | 0100 | 0110 |
5 | 0101 | 0111 |
6 | 0110 | 0101 |
7 | 0111 | 0100 |
8 | 1000 | 1100 |
9 | 1001 | 1101 |
10 | 1010 | 1111 |
11 | 1011 | 1110 |
12 | 1100 | 1010 |
13 | 1101 | 1011 |
14 | 1110 | 1001 |
15 | 1111 | 1000 |
格雷碼相鄰兩個代碼之間只有一位發生變化,這種編碼方式的好處是在代碼轉換時,不會產生過渡噪聲。普通的二進制代碼帶代碼轉換過程中,若需要變化的位數大於一,則在極短的瞬間可能產生中間狀態,這個就是轉換過程中的噪聲。
2.3 ASCII碼
來自百度:ASCII ((American Standard Code for Information Interchange)美國信息交換標准代碼)是基於拉丁字母的一套電腦編碼系統。
共128個7位二進制代碼,其編碼形式為 b7b6b5 b4b3b2b1 。個人理解高3位為分組位(也包含信息),低4位為信息位,同一英文字母的大小寫對應的ASCII碼低4位相同。
A : 100 0001
a : 110 0001
<LF> : 換行(Line feed) 000 1010
<CR>: 回車(Carriage return) 000 1101