python3筆記二:進制轉換與原碼反碼補碼


一:學習內容

  • 進制:二進制、八進制、十進制、十六進制
  • 進制轉換
  • 原碼、反碼、補碼

 

二:進制

  •  二進制

1.二進制:只有0和1,逢2進1

2.舉例:0+0=0、0+1=1、1+1=10

3.過程剖析:二進制11+1=100

1+1=0進1,1+1=0進1,故為100

 

  • 八進制

1.八進制:0到7,逢8進1

2.舉例:1+7=10、1+2=3

 

  • 十進制

1.十進制:0到9,逢10進1

 

  • 十六進制

1.說明:0 1 2 3 4 5 6 7 8 9 a b c d e f,逢16進1,a相當於十進制的10,b相當於十進制的11

2.舉例:1+f=10,即1+15=16,逢16進1,即10

 

  • 進制轉換

1.十進制轉二進制:倒除法,余數逆序

10(10)--->1010(2)

 

2.二進制轉十進制:當前的數字,乘以2的位數次方,最后相加,位數從0開始算

1010(2)--->10(10)
1010=0*2^0+1*2^1+0*2^2+1*2^3=2+8=10

 

3.二進制轉八進制:三位一取:從低位開始取,高位不夠補0

110101(2)--->65(8)
110為6,因為0*2^0+1*2^1+1*2^2=6
101為5,因為1*2^0+0*2^1+1*2^2=5

 

4.二進制轉十六進制:四位一取:從低位開始取,高位不夠補0

10100100(2)--->a4(16)
1010為10即a,因為0*2^0+1*2^1+0*2^2+1*2^3=10
0100為4即4,因為0*2^0+0*2^1+1*2^2+0*2^3=4

 

5.八進制轉二進制:一轉三位:八進制的一位相當於二進制的三位,轉換時按照十進制轉換

65(8)----->110101(2)
6為110,因為0*2^0+1*2^1+1*2^2=6
5為101,因為1*2^0+0*2^1+1*2^2=5

 

6.十六進制轉二進制:一轉四位:十六進制的一位相當於二進制的四位,轉換時按照十進制轉換

a4(16)---->10100100(2)
a為10即1010,因為0*2^0+1*2^1+0*2^2+1*2^3=10
4為0100,因為0*2^0+0*2^1+1*2^2+0*2^3=4

 

三:原碼、反碼、補碼

1.原碼:規定了字節數,寫明了符號位,就得到了數據的原碼

2.反碼:正數的反碼是其原碼,負數的反碼是其原碼的符號位不動,其他位取反即0變成1,1變成0

3.補碼:正數的補碼是其原碼,負數的補碼是其反碼的最低位加1

4.舉例

1的原碼、反碼、補碼:

原碼:00000000  00000000  00000000  00000001
反碼:00000000  00000000  00000000  00000001
補碼:00000000  00000000  00000000  00000001

 

-1的原碼、反碼、補碼:

原碼:10000000  00000000  00000000 00000001
反碼:11111111    11111111    11111111   11111110
補碼:11111111    11111111    11111111   11111111

 

故1+(-1)的結果為:

1的補碼:00000000  00000000  00000000  00000001
-1的補碼: 11111111    11111111    11111111     11111111
-1+1補碼結果:00000000  00000000  00000000  00000000
該補碼的原碼為0,即為0

 

5.說明:

補碼最高位為正數時原碼即為補碼,補碼最高位為負數時則符號位不變其他位取反然后最低位加1得原碼

計算機中存儲和計算都是用補碼進行的,但是輸出來給我們看是要將補碼算成原碼給我們看的

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM