5 分鐘閱讀

Int與Byte互轉

結構

一個Int等於4Byte,一個Byte等於8個Bit

10的寫法

7 6 5 4 3 2 1 0 進位
0 0 0 0 0 0 1 0 10
0 0 0 0 1 0 1 0 2

位元的排列

左邊的稱為高位元

右邊的稱為低位元

記成左邊的數子比較大,如我們常用的十進位就知道,越左邊 位數越大

思考如何轉換

8 7 6 5 4 3 2 1 0
1 0 0 0 0 0 0 0 0

一個byte最大值是255

如果今天數字是大於255,如256要如何用byte表示呢

256用一個byte肯定是接不了,至少要兩個比較合理

這邊要對256取餘數,為什麼是256不是255

上面的表顯示的256的位元狀態,前面八個bit代表一個byte

當你對256取餘數就可以取得0~7bit(一個byte)的值

然後再右移八位就可以繼續對256取餘數

直到int小於等於0的時候就停止

用可變長度的資料結構去儲存資料是滿好用的方法,如隊列(queue)

使用隊列來處理int to byte

256對256取餘數是0,0加入對列,256要右移8(就是把高位元往低位元移動8),256變成1 1對256取餘數是1,1加入對列,1要右移8,1變成0

queue

使用隊列來處理byte to int

現在對列是[0, 1] 要如何轉回256

int to byte是右移,這邊就是要左移了

左移的位數從0開始,每位移完一次就+8,直到把全部的對列執行完為止

範例程式

result = 0
exp = 0
for v in arr:
  result += v << exp
  exp += 8
return result

標籤:

更新時間: