位運算加速技巧
本方法可以讓c、c++語言指令進一步接近彙編指令的執行效率,提高嵌入式系統的速度和穩定性。
x = x * 2;
x = x * 64;
//改為:
x = x << 1; // 2 == 21
x = x << 6; // 64 == 26
x = x / 2;
x = x / 64;
//改為:
x = x >> 1; // 2 == 21
x = x >> 6; // 64 == 26
x = int(1.232)
//改為:
x = 1.232 >> 0;
var t:int = a;
a = b;
b = t;
//equals:
a = a^b;
b = a^b;
a = a^b;
i = -i;
//改為
i = ~i + 1; // not 寫法
//或i = (i ^ -1) + 1; // xor 寫法
x = 131 % 4;
//equals:
x = 131 & (4 - 1);
iseven = (i % 2) == 0;
//equals:
iseven = (i & 1) == 0;
//寫法1
i = x < 0 ? -x : x;
//寫法2
i = (x ^ (x >> 31)) - (x >> 31);
//寫法3
i=x^(~(x>>31)+1)+(x>>31);
eqsign = a * b > 0;
//equals:
eqsign = a ^ b > 0;
首先,顏色各個分量一般是以每8位為乙個單位。
8位,8bit,即乙個位元組,10進製數的取值範圍是0~255,一般用16進製表示,0x開頭,取值範圍是0x00到0xff(不區分大小寫)。
顏色一般有24位和32位兩種表示方法。
a即alpha值,alpha值為0時顏色為透明,alpha值為最大值時顏色為完全不透明,即可完全覆蓋處於它下面的其他顏色,無其他顏色可以透過它而顯示出來。
具體進行位移操作如下圖:
表示顏色分量的數要想轉化成乙個整個的顏色,就必須和其他的分量組合,每個分量放在自己應當處於的位置,就應該進行位移操作。
tips:圖中的顏色值34,23和88都是十六進製制表示的,所以移位操作的時候可以直接移動位置表示。
移位後就是整體移動相應的位數,乙個字母代表四位。
r移動16位,g移動8位,b不需要移動。
如果有a值,則a需要向左移動24位。
需要注意的是,不管是用什麼進製表示,十進位制還是十六進製制還是二進位制,位移操作都是二進位制範疇的。
反向的轉換則是右移。
知道乙個顏色整體值,想提取某乙個顏色分量,方法就是向右移動相應的位數,然後做乙個與運算,與0xff做與運算可以提取最低的兩位。
var 24bitcolor:uint = 0xff00cc;
var r:uint = 24bitcolor >> 16;
var g:uint = 24bitcolor >> 8 & 0xff;
var b:uint = 24bitcolor & 0xff;
var 36bitcolor:uint= 0xff342388;
var a:uint = color >>> 24 //注意這裡是》,無符號右移位操作,右移24位,把342388移出,得到0xff
var r:uint = color >> 16 & 0xff;//右移16位,把2388移出,取0x34
var g:uint = color >> 8 & 0xff;//右移8位,把88移出,得0x3423,與0xff按位與操作,得0x23
var b:uint = color & 0xff;//得到0x88
var r:uint = 0xff;
var g:uint = 0x00;
var b:uint = 0xcc;
var 24bitcolor:uint = r << 16 | g << 8 | b;
var a:uint = 0x01;
var r:uint = 0xff;
var g:uint = 0x00;
var b:uint = 0xcc;
var 36bitcolor:uint= a<<24 | r << 16 | g << 8 | b;
位運算的應用場景
1 使用位運算來判斷奇數偶數 console.log 22 1 返回0 console.log 23 1 返回112說明 在前邊看出任何數轉換成二進位制數,若為偶數,那麼他最後一位肯定為0 否則為1 因此使用按位與將這個數與1進行操作,1轉換為二進位制是000 01因此與1進行按位與運算偶數返回0,...
ActiveMQ的作用總結 應用場景及優勢
業務場景說明 訊息佇列在大型電子商務類 如京東 去哪兒等 有著深入的應用,佇列的主要作用是消除高併發訪問高峰,加快 的響應速度。在不使用訊息佇列的情況下,使用者的請求資料直接寫入資料庫,在高併發的情況下,會對資料庫造成巨大的壓力,同時也使得系統響應延遲加劇。在使用佇列後,使用者的請求發給佇列後立即返...
ActiveMQ的作用總結 應用場景及優勢
業務場景說明 訊息佇列在大型電子商務類 如京東 去哪兒等 有著深入的應用,佇列的主要作用是消除高併發訪問高峰,加快 的響應速度。在不使用訊息佇列的情況下,使用者的請求資料直接寫入資料庫,在高併發的情況下,會對資料庫造成巨大的壓力,同時也使得系統響應延遲加劇。在使用佇列後,使用者的請求發給佇列後立即返...