有時候學生會用到一些二進制和十六進制互轉的運算,以下的例子可以呈現將 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),亦同。

arrow
arrow
    全站熱搜

    vincent 發表在 痞客邦 留言(2) 人氣()