1. 程式人生 > >python 入門之 – 十六進位制運算(二十)

python 入門之 – 十六進位制運算(二十)

二進位制是由 0 ~ 1 組成的
八進位制是由 0 ~ 7組成的
十進位制是由 0 ~ 9組成的
十六進位制是由 0 ~ 15 組成的,可是 9 後面的的 10 是用字母來代替 A~ F ,也就是 0 ~ F,用字母代替了數字,避免不再重複

之前剛接觸 python 的時候學了以下 二進位制,現在從八進位制開始繼續往下走

python 提供了一個方法,可以將任意數字專成 八進位制

oct() : 將任意數字轉成 八進位制

如:

a = oct(1)
print(a)

>> 0o1

執行結果 0o1o 代表就是 八進位制 ,前面的為零,如果數值為 8 的話就是 0o10

,逢 8 進 1 ,如:

a = oct(8)
print(a)

>> 0o10

其餘過程和二進位制一樣算,十進位制其實就是數值本身,可以直接過濾了,如:1=12=23=3

接下來看看 十六進位制:

python 也內建了一個數字轉 16進位制 的方法,如:

hex() : 將任意數值專程 16進位制

如:

a = hex(123123123)
print(a)

>> 0x756b5b3

執行結果 0x756b5b3x 代表就是 十六進位制 ,前面的為零,如果數值為 16 的話就是 0o10 ,逢 16 進 1
在前面的章節當中瞭解到 2 進位制

是及其能讀懂的語言,那麼 十進位制,其實是我們人類能讀懂的,那麼 八進位制十六進位制 又是怎麼一回事呢,其實啊,在一些古老的語言裡面 八進位制 還是用的比較多的,但是現在在 python 裡面用的已經不多了,因為 python 可以讓很多語言融合進去,所以 python 內建了 八進位制 的轉換方法,所以可以直接忽略他,那麼 十六進位制 又是怎麼一回事呢?我用電腦上內建的 python2版本 來做一個演示就明白了:
在這裡插入圖片描述
可以看到,我在終端中給變數 a 賦值了其實他打印出來的是 十六進位制 的程式碼,以 x 開頭的 不會超過字母 f ,如果我用內建的 print() 函式列印,那麼出來的就是未被 十六進位制
轉變的程式碼,但是在 python3 版本後是不會直接被轉成 十六進位制 ,可是 python 讀取出來的還是 十六進位制,所以我們在 python 的學習當中用的最多還是 十六進位制二進位制,畢竟 二進位制 是計算機的根本

那麼為什麼 python 裡面要用 16進位制 呢?

1、計算機硬體是 0101 二進位制的, 16進位制 剛好是 2 的倍數,更容易表達一個命令或者資料,十六進位制 更加簡短,因為換算的時候 16進位制 可以頂 4位 2進位制數,也就是一個位元組(8進位制可以用兩個16進製表示
2、最早規定的 ASCII 字符集採用的就是 8bit (後期擴充套件了,但是基礎單位還是 8bit),8bit 用兩個 16進位制 就能表達出來,不管閱讀還是儲存都比其他進位制要方便
3、計算機中 cpu 運算也是遵循 ASCII 字符集,以16、32、64這樣的方式在發展,因此資料交換的時候 16進位制 也顯得更好
4、為了統一規範,cpu、記憶體、硬碟我們看到的都是採用的 16進位制 計算

那麼 16進位制 應該要用在哪裡呢?

1、網路程式設計,資料交換的時候需要對位元組進行解析都是一個 byte 一個 byte 的處理,一個 byte 可以用 0xff 兩個 16進位制 來表達,通過網路抓包,可以看到資料是通過 16進位制 傳輸的
2、資料儲存,儲存到硬碟中是 0101 的二進位制方式,儲存到系統的表達方式都是 byte 方式
3、一些常用值的定義,比如前端 CSS (層疊樣式表) 的一些屬性如:color:#f00 這種就是用 16進位制 的方式,4個 16進位制 可以表達好幾百萬的顏色資訊。