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 的方法...