JavaScript?位運算及實際應用實例
位運算基礎(chǔ)
位運算時所有操作數(shù)均被視為 32 位補碼二進制串,不足補 0,超出則丟棄最高有效位。運算結(jié)果也按補碼反轉(zhuǎn)形式返回
&
:位 AND。僅當兩個操作數(shù)對應位均為 1 時,該位的結(jié)果值為 1。例如:
const a = 120; // 0b000...1111000 const b = 11; // 0b000...0001011 a & b; // 8 = 0b000...1000
&=
:位 AND 賦值。兩個操作數(shù)做位 AND 運算,并將結(jié)果賦值給第一個操作數(shù)
|
:位 OR。只要兩個操作數(shù)對應位的其中一個為 1,該位的結(jié)果值便為 1。例如:
const a = 5; // 0b000...0101 const b = 3; // 0b000...0011 a | b; // 7 = 0b000...0111
|=
:位 OR 賦值。兩個操作數(shù)做位 OR 運算,并將結(jié)果賦值給第一個操作數(shù)
^
:位 XOR。當兩個操作數(shù)對應位中僅有一個為 1 時,該位的結(jié)果值為 1。例如:
const a = 5; // 0b000...0101 const b = 3; // 0b000...0011 a ^ b; // 6 = 0b000...0110
^=
:位 XOR 賦值。兩個操作數(shù)做位 XOR 運算,并將結(jié)果賦值給第一個操作數(shù)~
:位 NOT。將操作數(shù)按位取反。運算結(jié)果滿足~x === -(x+1)
<<
:左移位。將第一個操作數(shù)向左移動指定位。左邊移出位被拋棄,右邊多出位由補 0。例如:
const a = 9; // 0b000...001001 const b = 2; a << b; // 36 = 0b000...100100
>>
:帶符號右移位。將第一個操作數(shù)向右移動指定位。右邊移出位被拋棄,左邊多出位由原先最左值補齊
const a = 36; // 0b000...100100 const b = 2; a >> b; // 9 = 0b000...001001
>>>
:無符號右移位。將第一個操作數(shù)向右移動指定位。右邊移出位被拋棄,左邊多出位由補 0
實際應用
判斷整數(shù)是否為 2 的冪
function isPowerOfTwo(n) { return n > 0 && ((n - 1) & n) === 0; }
判斷整數(shù)奇偶性
function isOdd(n) { return (n & 1) === 1; }
標志判斷
const canFly = 1 << 0; const canRun = 1 << 1; const canSwim = 1 << 2; const canJump = 1 << 3; let flags = 0; // 添加標志 flags |= canFly; flags |= canJump; // 判斷標志 !!(flags & canFly); // true !!(flags & canJump); // true // 清除標志 flags &= ~canFly; !!(flags & canFly); // false
以上就是JavaScript 位運算及實際應用的詳細內(nèi)容,更多關(guān)于JavaScript 位運算及實際應用的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
原生Javascript/原生JS修改CSS樣式的4種方式簡單示例
在網(wǎng)頁開發(fā)中我們經(jīng)常會用到JavaScript來操作網(wǎng)頁元素,其中一個常見的操作就是修改元素的CSS樣式,下面這篇文章主要給大家介紹了關(guān)于原生Javascript/原生JS修改CSS樣式的4種方式,需要的朋友可以參考下2024-03-03關(guān)于TypeScript開發(fā)的6六個實用小技巧分享
TypeScript是Javascrip t超集,支持靜態(tài)類型檢測,可以在編譯期提前暴露問題,節(jié)省debug時間,下面這篇文章主要給大家介紹了關(guān)于TypeScript開發(fā)的6六個實用小技巧,需要的朋友可以參考下2021-09-09純JavaScript代碼實現(xiàn)移動設(shè)備繪圖解鎖
為了個人信息的安全起見,移動設(shè)備上都有個繪圖解鎖,使用起來非常簡單,代碼是怎么實現(xiàn)的呢?下面小編給大家介紹js實現(xiàn)移動設(shè)備繪圖解鎖,需要的朋友可以參考下2015-10-10