94 python高階 進製

2021-09-26 07:16:44 字數 3147 閱讀 8365

1)理解個x進製的概念 :

每一位 只允許出現 0~x-1 這幾個數字,逢x進一,基是x, 每一位有乙個權值大小是x的冪次。 其表示的數值可以寫成按位權展開的多項式之和。

十進位制: 每一位只允許出現0~9這十個數字,逢十進1,基是十,每一位數字有乙個 權值大小是十的冪次。 其表示的數值可以寫成按位權展開的多項式之和。

二進位制: 每一位只允許出現0~1這二個數字,逢二進1,基是 二, 每一位數字有乙個權值大小是二的冪次。 其表示的數值可以寫成按位權展開的多項式之和。

八進位制:

十六進製制

2)假如用兩個位元組表示 乙個整數, 如下:

十進位制數字1 的二進位制表現形式: 0000 0000 0000 0001

十進位制數字2 的二進位制表現形式: 0000 0000 0000 0010

如何表示二進位制數的正負?

3)有符號數和無符號數的概念

規則:把二進位制數中的最高位(最左邊的那位)用作符號位

對於有符號數,最高位被計算機系統規定為符號位(0為正,1為負)

對於無符號數,最高位被計算機系統規定為資料位

按照這種說法,比如有符號數 +2 -2 的原碼形式:

+2 = 0000 0000 0000 0010

-2 = 1000 0000 0000 0010

真值 機器數

+1 = 0000 0000 0000 0001

-1 = 1000 0000 0000 0001

-----------------------------------------

1000 0000 0000 0010

-1+1 的結果?

-1+1 = 1000 0000 0000 0010 ----》 -2

不等於0,按理說-1+1等於0才對,為什麼會是-2呢?

規則

數字在計算機中,是用二進位制補碼的形式來儲存的,因此-1 +1需要按照補碼進行相加才是正確的結果

1)如何計算補碼?
規則:

正數:原碼 = 反碼 = 補碼

負數:反碼 = 符號位不變,其他位取反

補碼 = 反碼+1

1 的原碼:0000 0000 0000 0001

-1的原碼:1000 0000 0000 0001

-1的反碼:1111 1111 1111 1110

-1的補碼:1111 1111 1111 1111

重新計算 -1+1 結果

2)從補碼轉回原碼

負數補碼轉換原碼的規則:

原碼 = 補碼的符號位不變 -->資料位取反--> 尾+1

-1的補碼:1111 1111 1111 1111

取反:1000 0000 0000 0000

-1的原碼:1000 0000 0000 0001

可以把減法用加法來算,只需設計加法器就好了。運算的時候都是用補碼去運算的。 2-1 = 2+(-1)=0000 0000 0000 0010 +1111 1111 1111 1111

知識擴充套件

為何要使用原碼, 反碼和補碼 既然原碼才是被人腦直接識別並用於計算表示方式, 為何還會有反碼和補碼呢? 首先, 因為人腦可以知道第一位是符號位, 在計算的時候我們會根據符號位, 選擇對應加減,但是對於計算機,加減乘數已經是最基礎的運算, 要設計的盡量簡單。計算機辨別"符號位"顯然會讓計算機的基礎電路設計變得十分複雜!於是人們想出了將符號位也參與運算的方法. 我們知道,根據運算法則減去乙個正數等於加上乙個負數, 即: 1-1 = 1 + (-1) = 0 , 所以機器可以只有加法而沒有減法, 這樣計算機運算的設計就更簡單了.於是人們開始探索 將符號位參與運算, 並且只保留加法的方法

#10進製轉為2進製

>>

>

bin(10)

'0b1010'

#2進製轉為10進製

>>

>

int(

"1001",2

)9#10進製轉為16進製制

>>

>

hex(10)

'0xa'

#16進製製到10進製

>>

>

int(

'ff',16

)255

>>

>

int(

'0xab',16

)171

#16進製製到2進製

>>

>

bin(

0xa)

'0b1010'

>>

>

#10進製到8進製

>>

>

oct(8)

'010'

#2進製到16進製制

Python作業9 4就餐人數

usr bin env python3 encoding utf 8 please write your outline code.class restaurant 餐館的相關資訊 建構函式 def init self,restaurant name,cuisine type 上一句,其中 rest...

進製轉換 高階

problem description 輸入乙個十進位制數n,將它轉換成r進製數輸出。input 輸入資料報含多個測試例項,每個測試例項包含兩個整數n 32位整數 和r 2 r 16,r 10 output 為每個測試例項輸出轉換後的數,每個輸出佔一行。如果r大於10,則對應的數字規則參考16進製制...

Python練習題 9 4就餐人數

9 4 就餐人數 在為完成練習 9 1 而編寫的程式中,新增乙個名為 number served 的屬性,並將其預設值設定為 0。根據這個類建立乙個名為 restaurant 的例項 列印有 多少人在這家餐館就餐過,然後修改這個值並再次列印它。新增乙個名為 set number served 的方法...