js異或運(yùn)算符^小技巧分享
js異或運(yùn)算符^小技巧
這個(gè)運(yùn)算符主要是在位運(yùn)算的時(shí)候使用,但是在普通的數(shù)也能使用,且有一個(gè)轉(zhuǎn)換過程,即將二進(jìn)制的數(shù)轉(zhuǎn)換為十進(jìn)制
var a = 1 ^ 2; //3 //1 -> 01 //2 -> 10 //1 ^ 2 -> 11 -> 3
如上所示,在十進(jìn)制進(jìn)行異或運(yùn)算符操作時(shí)也是OK的,結(jié)果顯示也是十進(jìn)制的結(jié)果,示例中的轉(zhuǎn)換過程只是我假象的轉(zhuǎn)換過程,只是便于理解,假設(shè)由十進(jìn)制到二進(jìn)制進(jìn)行異或運(yùn)算,再將結(jié)果轉(zhuǎn)換為十進(jìn)制,實(shí)際上的運(yùn)算并不一定是如此
利用異或運(yùn)算可以找出數(shù)組中奇?zhèn)€數(shù)的項(xiàng)
var a = [2,3,2,4,4]; for(let i = 0; i < a.length; i++) { ? ? a[0] = a[0] ^ a[i]; } //a[0]為3,即單獨(dú)存在的一項(xiàng)
這里涉及到離散數(shù)學(xué)的異或運(yùn)算性質(zhì)了
- 1.交換律:a ^ b ^ c <=> a ^ c ^ b
- 2.任何數(shù)于0異或?yàn)槿魏螖?shù) 0 ^ n => n
- 3.相同的數(shù)異或?yàn)?: n ^ n => 0
因此上面的例子2 ^ 3 ^ 2 ^ 4 ^ 4等價(jià)于 2 ^ 2 ^ 4 ^ 4 ^ 3 => 0 ^ 0 ^3 => 3
js中的位運(yùn)算符(按位與、按位或、按位異或)使用
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <script type="text/javascript"> var a=1; var b=0; //按位與&:兩個(gè)操作數(shù)都是1,結(jié)果才是1 alert(a&b) //結(jié)果是0 //按位或:兩個(gè)操作數(shù)只要有一個(gè)是1,結(jié)果就是1 alert(a|b) //結(jié)果是1 //按位異或:兩個(gè)數(shù)字一樣,結(jié)果為0;兩個(gè)數(shù)字不一樣,結(jié)果就是1。 alert(a^b) //結(jié)果是1 //簡單的方法:數(shù)字求負(fù),在減1 alert(~a)//結(jié)果是-2 </script> <title>位運(yùn)算符</title> </head> <body> </body> </html>
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
ionic組件ion-tabs選項(xiàng)卡切換效果實(shí)例
這篇文章主要為大家詳細(xì)介紹了ionic組件ion-tabs選項(xiàng)卡切換效果實(shí)例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-08-08onsubmit阻止form表單提交與onclick的相關(guān)操作
return false會阻止表單提交,基本上關(guān)于onsubmit=return false有以下幾點(diǎn)要注意的地方,學(xué)習(xí)后臺編程的朋友一定要知道。2010-09-09微信小程序?qū)崿F(xiàn)多選框功能的實(shí)例代碼
這篇文章主要介紹了微信小程序?qū)崿F(xiàn)多選框功能及效果,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-06-06js 計(jì)數(shù)排序的實(shí)現(xiàn)示例(升級版)
這篇文章主要介紹了js 計(jì)數(shù)排序的實(shí)現(xiàn)示例(升級版),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-01-01