將數字的Byte,向左移動, 移位的位數,從0到32.

BITLSHIFT()將二進位的數值中的每一位向左移動您在中指定的次數。

每次移位時,最低有效位(位0,最右邊的位)將設置為0.最高有效位(位31,最左邊的位)將丟失。

將數字左移一次具有將數字乘以2的效果,不同之處在於,如果數字太大(等於或大於2 ^ 32(約40億)),則會丟失高位。

以下 巨集功能為紅色,綠色和藍色採用三個單獨的值,並將它們組合為單個24位值。

#定義RGB(r,g,b);

(bitlshift(bitand((r),0xff),16)+ bitlshift(bitand((g),0xff),8)+ bitand((b),0xff))

每個值都是8位,BITAND()可以確保這一點。 紅色值向左移動16位,為綠色和藍色值騰出空間。 綠色值向左移動8位,為藍色值騰出空間。 將所有三個數字加在一起以形成單個24位數字。

例如,假設您將以下值(以二進制顯示)傳遞給宏函數:

紅色11000011

綠色10101010

藍色11111111

轉移紅色和綠色將得到以下值:

紅色11000011 00000000 00000000

綠色00000000 10101010 00000000

藍色00000000 00000000 11111111

8位值被移位,因此它們的位不重疊。 現在,將這些值相加即可將它們合併為一個24位值:

RGB 11000011 10101010 11111111

0x表示16進位,0表示8進位,10進位另外就不用符号了。

個人頭像照片

By 伍芳左

MIS, ERP Pro... RHCE Member (7.2)

發表迴響