將數字的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進位另外就不用符号了。