這節課的內容太簡單了……
學習進位的轉換。
在計算機中,我們常用的進位有4種。
一、二進位(Binary)
在二進位裡,只有 0 和 1,二進位的運算遵循逢二進一。
在 python 中要輸入一個二進位數,你不能直接輸入。
比如我輸入一個 666 看看。
很明顯這是個十進位。
要輸入一個二進位,你要先把它轉換成二進位。
用短除法算一下:
結果倒著寫,也就是說十進位數 666 的二進位數是 1010011010,把它輸入 py 中。
這玩意兒是個,看起來很像二進位數的十進位數。
這是因為在 python 中,默認情況下認為你輸入的數都是十進位的。
要輸入二進位,你得給它加一個 0b 的前綴,是數字 0 和字母 b,不要搞錯了。
如上圖,py 告訴你你輸入的是十進位的 666。
因為本節課內容比較少,所以我補充一個手工速算十進位到二進位的轉換方法。
左側圖中,綠色的數字分別為 2 的 0 次方,2 的 1 次方,以此類推到無限大。
右側從 666 開始減去左側的表中的比他小的最大數,也就是拆分,666 可以拆分成 512+128+16+8+2,左側對應的數字標上去,然後倒著寫即可。
2 的 N 次方背熟後這個是可以心算的,不用列左側的表,直接遞減即可。
然鵝,在我們的實際編程中,很少需要你自己去算一個非十進位,用計算器一類的快速搞定就行了。
因此上述所有內容只是我在水字數,要不然這節課真的太簡單了。
在 py 中把一個數字轉為二進位,只需要使用 bin 方法。
二、八進位(Octal)
八進位一般很少用,它由 0-7 這 8 個數組成,要把一個十進位數轉成 8 進位,短除法除數為 8 即可。
直接來吧,oct(666),看看效果。
可以看到八進位數是用數字 0 和 字母 o 開頭的。
這裡得注意一下字母 o 的大小寫問題,我們做個試驗。
你能發現,無論大寫還是小寫,都能符合我們的預期效果。
但實際上因為編程中的一些習慣,就是那種沒有哪本書哪個條例明確規定了的,但大家都在遵守的行規,大寫字母,通常是用來標識「常量」的。
當然這是我們後期才會學到的知識,現在你記住我們平時開發的時候都用小寫即可。
比如我用 oct 方法轉換一個數的時候,如果把方法名大寫:
這個報錯我們昨天見過,OCT 未被定義,不曉得這玩意兒有啥子功能。
這就是個潛規則,按理說大寫的 OCT 它應該是個常量的名字,而不是作為方法的名字。
三、十進位(Decimal)
十進位裡,主要學習怎麼把一個非十進位的數轉成十進位。
其實是短除法的一個逆運算。
比如把二進位數 0b11101001 轉為十進位。
將一個整數轉為十進位的方法得注意下,並不是所謂的 dec,而是 int,昨天剛學過這個。
四、十六進位(Hex)
十六進位由0-9,a-f組成。a 代表 10,b 代表 11,f 代表 15,超過 15 就該進位了。
可以用 hex 方法求 16 進位,比如 16 的十六進位。
超過了 f,進了一位,所以是 0x10。
五、手寫與印刷
就和我們的英文字母的 a 有個印刷體一樣,一般情況下我們手寫時很少會寫成這樣的形式:
0b1001
0o666
0x999
尤其是八進位那個,你真不怕對方 0 和 o 不分,6 和 b 不分,0x999=0 嗎?
手寫的時候我們一般會這樣寫,看起來比較簡單明了。
另外諸如二進位轉換為八進位的三位一併法,轉十六進位的四位一併法等方法,手算並不要求掌握,這年代都有計算器了,學那玩意兒幹啥。
六、總結
七、作業
這是一篇存稿,我也有存稿的看到了嘛!!!
我寫好稿子的時候還8知道昨天那篇誰第一個做完作業的。
所以直接布置今天的作業,研究以下內容:
1.一個十進位的小數,怎麼轉為二進位?
2.一個十進位的負整數,怎麼轉為二進位?
這個作業和後續課程無關,百度能搜到的,只是擴展下大家的知識層面。
第一個告訴我他學會了的紅包獎勵,一個問題 1 元錢,不驗證真偽性,嚶嚶嚶。