有時候學生會用到一些二進制和十六進制互轉的運算,以下的例子可以呈現將 1/0 轉換成燈號(紅、綠)。在上半部的S欄中顯示的是J欄到Q欄中的 1/0 轉換成十六進制數的結果,而在下半部的J欄到Q欄中的 1/0 是由S欄將十六進制數轉換而來。
該如何轉換二進制數和十六進制數呢?而燈號該如何呈現呢?
(一) 十六進制轉二進制
儲存格J1:=VALUE(MID(RIGHT("00000000"&HEX2BIN($S1),8),COLUMN(A:A),1))
HEX2BIN($S1):將儲存格S1中的十六進制數轉為二進制數。
RIGHT("00000000"&HEX2BIN($S1),8):將二進制數先串接「00000000」字串,再由右取 8 碼。(此舉是因為轉換為二進制數時,前面幾碼若為 0 時會被省略)
MID(RIGHT("00000000"&HEX2BIN($S1),8),COLUMN(A:A):逐一取出每一個位元數(共 8 碼)。
最後以 VALUE 函數將上式轉換為數值。
複製儲存格J1,貼至儲存格J1:Q8。
接著要來顯示紅色燈。
儲存格A1:=J1,複製儲存格A1,貼至儲存格A1:H8。
將儲存格A1:H8設定格式化規則如下:
(二) 二進制轉十六進制
儲存格S10:=RIGHT("0"&DEC2HEX(SUMPRODUCT(($J10:$Q10)*2^(8-COLUMN(A10:H10)))),2)
SUMPRODUCT(($J10:$Q10)*2^(8-COLUMN(A10:H10)):將儲存格J10:Q10中的 1/0 轉換成 10 進制數。
將上式的結果透過 DEC2HEX 函數,將上述之 10 進制數轉換成十六進制數。
將上式的十六進制數先串接「0」字串,再由右取 2 碼。(此舉是因為轉換為十六進制數時,前面 1 碼若為 0 時會被省略)
複製儲存格S10,貼至儲存格S10:S17。
接著要來顯示綠色燈。
儲存格A10:=J10,複製儲存格A10,貼至儲存格A10:H17。
將儲存格A10:H17設定格式化規則如下:
註:儲存格T10:=HEX2DEC(S10),將十六進制數轉換為10進制數;儲存格T10:=HEX2DEC(S10),亦同。
留言列表