每位的數據*2的次方 值相加即可。例:1101 計算十進制:1101 b = 1 ∗ 2 3 1 ∗ 2 2 0 ∗ 2 1 1 ∗ 2 0 = 13 1101b = 1*2^3 1*2^2 0*2^1 1*2^0 = 131101b=1∗23 1∗22 0∗21 1∗20=13
2. 十進制整數轉二進制除二取餘法,例:42轉二進制:
結果倒序組裝: 101010b
二、原碼、反碼、補碼、移碼1. 原碼計算機内保存數據的時候,可能會對數據進行處理。原始數據就是原碼。
2. 反碼反碼是将原碼各位求反。
3. 補碼對原碼求反碼後再加1。注意:
偏移2n-1的情況下,移碼就是将補碼符号位求反。
5. 特殊數值-127[ − 127 ] 原 = 11111111 [-127]_原=11111111[−127]原=11111111[ − 127 ] 反 = 1000000 [-127]_反=1000000[−127]反=1000000[ − 127 ] 補 = 1000001 [-127]_補=1000001[−127]補=1000001[ − 127 ] 移 = 0000001 [-127]_移=0000001[−127]移=0000001
-1[ − 1 ] 原 = 1000001 [-1]_原=1000001[−1]原=1000001[ − 1 ] 反 = 11111110 [-1]_反=11111110[−1]反=11111110[ − 1 ] 補 = 11111111 [-1]_補=11111111[−1]補=11111111[ − 1 ] 移 = 01111111 [-1]_移=01111111[−1]移=01111111
三、浮點數1. 階碼與尾數IEEE754标準提供了兩種規格的浮點格式:32位單精度格式和64位雙精度格式。
32位單精度格式
1位 |
8位 |
23位 |
符号 |
階碼 |
尾數 |
1位 |
11位 |
52位 |
符号 |
階碼 |
尾數 |
其中:
[ 178.125 ] 10 = [ 10110010.001 ] 2 [ 178.125]_{10} = [10110010.001]_2[ 178.125]10=[10110010.001]2
(2) 構造尾數将10110010.001的小數點向左移7位,去掉頭部的1,尾數部分補足23位:01100100010000000000000
(3) 構造階碼IEEE 754規定8位階碼的偏移量為127,加上偏移量後轉二進制。上一步尾數左移了7位,127 7=254,[ 254 ] 1 0 = [ 10000110 ] 2 [254]_10 = [10000110]_2[254]10=[10000110]2
(4) 符号位: 0(5) 組合結果0 10000110 01100100010000000000000
3. 對階在對浮點數進行加、減運算時,要先進行對階,對階的規則是:小階向大階看齊;階碼小的尾數右移,每右移一位、階碼加1,直到兩數階碼相等。
四、編碼基礎1. 海明碼基本知識海明碼可以進行檢錯和糾錯。海明碼在原數據中的一些固定位置插入數據,以進行奇偶校檢,能更正一個比特的錯誤;兩個比特出錯時,隻能偵測不能更正;三個以上比特出錯,則不能偵測和糾錯。
海明碼校驗位長度:
對0100 1101進行海明碼編碼,下面P表示校驗位,R表示數據位:
(1) 數據和校驗位填充,校驗位在P1 P2 P4 P8處
海明碼位置 |
12 |
11 |
10 |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
幂 |
0 |
1 |
0 |
0 |
P4 |
1 |
1 |
0 |
P3 |
1 |
P2 |
P1 |
計算P1:從右邊第1位開始把間隔1位的比特位取出來,數1數量。上表中可數得:
海明碼位置 |
12 |
11 |
10 |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
幂 |
0 |
1 |
0 |
0 |
P4 |
1 |
1 |
0 |
P3 |
1 |
P2 |
P1 |
1數量為3奇數,進行偶校驗,把P1填 1。
計算P2:從右邊第2位開始隔2劃2:
海明碼位置 |
12 |
11 |
10 |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
幂 |
0 |
1 |
0 |
0 |
P4 |
1 |
1 |
0 |
P3 |
1 |
P2 |
P1 |
1數量為偶數,P2填0。
計算P3:從右邊第4位隔4劃4:
海明碼位置 |
12 |
11 |
10 |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
幂 |
0 |
1 |
0 |
0 |
P4 |
1 |
1 |
0 |
P3 |
1 |
P2 |
P1 |
1的數量為偶數,P3=0。計算P4:從右邊第8位隔8劃8:
海明碼位置 |
12 |
11 |
10 |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
幂 |
0 |
1 |
0 |
0 |
P4 |
1 |
1 |
0 |
P3 |
1 |
P2 |
P1 |
計算得P4=1
編碼結果:
海明碼位置 |
12 |
11 |
10 |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
幂 |
0 |
1 |
0 |
0 |
1 |
1 |
1 |
0 |
0 |
1 |
0 |
1 |
将上面數據位錯誤的數據:
海明碼位置 |
12 |
11 |
10 |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
幂 |
0 |
1 |
0 |
0 |
1 |
1 |
0 |
0 |
0 |
1 |
0 |
1 |
從右側P1開始,隔1取1計算1的數量,偶數個即為正确
海明碼位置 |
12 |
11 |
10 |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
幂 |
0 |
1 |
0 |
0 |
1 |
1 |
0 |
0 |
0 |
1 |
0 |
1 |
從右側P2開始,隔2取2,1為奇數個,校驗不通過
海明碼位置 |
12 |
11 |
10 |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
幂 |
0 |
1 |
0 |
0 |
1 |
1 |
0 |
0 |
0 |
1 |
0 |
1 |
從右側P4開始,隔4取4,1為奇數個,校驗不通過
海明碼位置 |
12 |
11 |
10 |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
幂 |
0 |
1 |
0 |
0 |
1 |
1 |
0 |
0 |
0 |
1 |
0 |
1 |
從右側P8開始,隔8取8,1為奇數個,校驗通過
海明碼位置 |
12 |
11 |
10 |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
幂 |
0 |
1 |
0 |
0 |
1 |
1 |
0 |
0 |
0 |
1 |
0 |
1 |
P2,P4校驗不通過,2 4=6,可知第6位錯誤。
(3) 糾正第6個取反即為正确數據。
2. 循環冗餘校驗碼循環冗餘校驗碼(CRC)利用生成多項式為k個數據位産生r個校驗位來進行編碼,其編碼長度為 k r k rk r。
CRC由兩部分組成,左邊為數據,右邊為校驗碼。如果數據占k位,則校驗占n-k位。這裡n是CRC碼的字長,所以又被稱為(n,k)碼。求CRC編碼時,采用的模2運算。
3. 哈夫曼樹構造哈夫曼樹過程:假設n個權值為w1, w2, ……, wn,準備構造的哈夫曼樹有n個葉子節點,其構造規則:從森林裡選出權值最小結點合并,作為一棵新樹的子樹,且新權的根結點權值為其子樹根節點權值之和;從森林裡删除選取的兩棵樹,将新樹加入森林;重複上面步驟。
示例
結點 |
a |
b |
c |
d |
e |
f |
權值 |
0.19 |
0.05 |
0.23 |
0.13 |
0.34 |
0.06 |
構造的哈夫曼樹:
,
更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!