大家好,我是奶綠茶 什麼是位元的移動運算呢? 在 flash 裡,使用的符號是: >>(二個大於, 位元向右移) , > 1 這句的意思是說,8 的二進位數位, 向右移一個位元 8 (十進位) 的 二進位數值即是:1000 簡單對照一下: 左邊是十進位, 右邊是二進位 1 = 1 2 = 10 3 = 11 4 = 100 5 = 101 6 = 110 7 = 111 8 = 1000 所以 1000 , 向右移一個位元, 即是踢掉最右邊的那個值, 得到 100 就等於 4(十進位) 好理解的方法,就是 8 除以 2 那 8 >> 2 呢 就是右移二個位元, 踢掉最右邊的二個值, 得到 10 就等於 2(十進位) 好理解的方法,就是 8 除以 2 ,再除以2 反之: > 1 值 * 0.5 值 / 2 2. 直接得到整數 在 flash 裡, 元件的座標出現小數點的話, 會容易會糊糊的 如果此時想要得到某個數值的一半且是整數的話,就用 位元移動的算法吧 缺點 1. 運算優先權的順序 先乘除, 後加減, 這是不變的定律 但位元移動的優先權是最低的,所以是 先乘除, 後加減, 再做位元移動的運算 例: 8 >> 1 + 1 = 2 8 * 0.5 +1 = 5 8 / 2 +1 = 5 結果是不同的。 取RGB數值 大家好,我是奶綠茶 有個色碼為:var color:uint = 0x1199FF; 0x 指的是 16 進位, 一般都是用在色碼上 現在想取出這個色碼的 R, G , B值 當然不能用 String 來抓 這時候就要上位元移動和數位邏輯來製作。 一樣要先把 16 進位轉成 2 進位 偷懶一下,開啟小算盤, 就有轉換的功能了 2 進位為: 100011001100111111111(共24個位元) 所以我們可以知道一個色碼, 佔了 8 個位元 取出 R :就是把右邊的 16 個通通踢掉 var r:uint = color >> 16; 簡單吧 取出 G :因為 G 色碼是在正中間, 所以要先踢掉右邊的 8 位元 var g:uint = color >> 8; 再把...