javascript怎么進(jìn)行按位求反

發(fā)布時(shí)間:2024-07-24
在javascript中,可以利用“~”操作符來實(shí)現(xiàn)按位求反,語法“~ 運(yùn)算數(shù)”;“~”操作符可以將指定運(yùn)算數(shù)轉(zhuǎn)為二進(jìn)制整數(shù)形式,并對(duì)該二進(jìn)制操作數(shù)逐位進(jìn)行取反操作。
本教程操作環(huán)境:windows7系統(tǒng)、javascript1.8.5版、dell g3電腦。
在javascript中,可以利用“~”操作符來實(shí)現(xiàn)按位求反。如~1 = -2,~-3=2,~true=-2,~false=-1
“~”操作符可以查看指定值的二進(jìn)制表示形式,并對(duì)該二進(jìn)制操作數(shù)逐位進(jìn)行取反操作
第 1 步:把運(yùn)算數(shù)轉(zhuǎn)換為 32 位的二進(jìn)制整數(shù)。
第 2 步:逐位進(jìn)行取反操作。
第 3 步:把二進(jìn)制反碼轉(zhuǎn)換為十進(jìn)制浮點(diǎn)數(shù)。
對(duì) 12 進(jìn)行位非運(yùn)算,則返回值為 -13。
console.log( ~ 12 ); //返回值-13
下圖以算式的形式解析了對(duì) 12 進(jìn)行位非運(yùn)算的過程。
如何按位取反計(jì)算
按位取反的運(yùn)算規(guī)則步驟:
1、十進(jìn)制轉(zhuǎn)成原碼
轉(zhuǎn)成二進(jìn)制原碼,最高位是符號(hào)位,0為正數(shù),1為負(fù)數(shù)
十進(jìn)制 —-> 原碼 1 —-> 00000001 -1 —-> 100000012、原碼轉(zhuǎn)成反碼
正數(shù)的反碼就是原碼,負(fù)數(shù)的反碼是符號(hào)位不變,其余位取反
十進(jìn)制 —-> 原碼 —-> 反碼 1 —-> 00000001 —-> 00000001 -1 —-> 10000001 —-> 111111103、反碼轉(zhuǎn)成補(bǔ)碼
正數(shù)的補(bǔ)碼還是原碼,負(fù)數(shù)的補(bǔ)碼是在反碼的基礎(chǔ)上加1
十進(jìn)制 —-> 原碼 —-> 反碼 —-> 補(bǔ)碼 1 —-> 00000001 —-> 00000001 —-> 00000001 -1 —-> 10000001 —-> 11111110 —-> 111111114、補(bǔ)碼取反得原碼
正整數(shù)補(bǔ)碼取反之后符號(hào)位置為1,是一個(gè)負(fù)整數(shù),所以再按照負(fù)整數(shù)計(jì)算補(bǔ)碼的方式逆運(yùn)算得到原碼
逆運(yùn)算得到原碼,首先將取反的補(bǔ)碼轉(zhuǎn)成反碼,公式:反碼=補(bǔ)碼 – 1,然后將反碼轉(zhuǎn)成原碼,符號(hào)位不變,其他位取反
十進(jìn)制 —-> 原碼 —-> 反碼 —-> 補(bǔ)碼 —-> 補(bǔ)碼取反 —-> 取反補(bǔ)碼轉(zhuǎn)成反碼 —-> 轉(zhuǎn)成原碼 1 —-> 00000001 —-> 0000001 —-> 00000001 —-> 11111110 —-> 11111101 —-> 10000010
負(fù)整數(shù)補(bǔ)碼取反之后符號(hào)位置為0,是一個(gè)正整數(shù),因正整數(shù)的反碼與補(bǔ)碼就是本身,所以不需要再進(jìn)行逆運(yùn)算
十進(jìn)制 —-> 原碼 —-> 反碼 —-> 補(bǔ)碼 —-> 補(bǔ)碼取反得原碼 -1 —-> 10000001 —-> 11111110 —-> 11111111 —-> 00000000 5、將原碼轉(zhuǎn)成二進(jìn)制十進(jìn)制 —-> 原碼 —-> 反碼 —-> 補(bǔ)碼 —-> 補(bǔ)碼取反 —-> 取反補(bǔ)碼轉(zhuǎn)成反碼 —-> 轉(zhuǎn)成原碼 —-> 轉(zhuǎn)成二進(jìn)制 1 —-> 00000001 —-> 0000001 —-> 00000001 —-> 11111110 —-> 11111101 —-> 10000010 —-> -2十進(jìn)制 —-> 原碼 —-> 反碼 —-> 補(bǔ)碼 —-> 補(bǔ)碼取反得原碼 —-> 轉(zhuǎn)成二進(jìn)制 -1 —-> 10000001 —-> 11111110 —-> 11111111 —-> 00000000 —-> 0
所以,~1=-2,~-1=0
取反再取反~~的作用
操作符~, 是按位取反的意思,表面上~~(取反再取反)沒有意義,實(shí)際上在js中可以將浮點(diǎn)數(shù)變成整數(shù)。
console.log(~~1.11); //1 console.log(~~-25.11); //-25
【相關(guān)推薦:javascript學(xué)習(xí)教程】
上一個(gè):PCR擴(kuò)增實(shí)驗(yàn)試劑盒的常見幾大類有哪些?
下一個(gè):蝸牛的防治

80公斤玻璃棉板可以生產(chǎn)嗎?
b1級(jí)橡塑保溫管,發(fā)泡橡塑保溫管價(jià)格低
D671J氣動(dòng)襯膠蝶閥ZSRWJ氣動(dòng)全襯包膠開關(guān)切斷蝶閥產(chǎn)品特點(diǎn)
文化事業(yè)建設(shè)費(fèi)優(yōu)惠政策2020
塔式起重機(jī)保證項(xiàng)目的檢查評(píng)定應(yīng)符合哪些規(guī)定?
電競館網(wǎng)紅自動(dòng)門
初粘力測試儀的特征
筆記本沒驅(qū)動(dòng)如何恢復(fù)(筆記本沒有任何驅(qū)動(dòng)怎么辦)
鴻蒙系統(tǒng)主題包(鴻蒙系統(tǒng)主題app)
蘋果鏡像一直在轉(zhuǎn)圈圈(蘋果鏡像一直在轉(zhuǎn)圈怎么回事)
十八禁 网站在线观看免费视频_2020av天堂网_一 级 黄 色 片免费网站_绝顶高潮合集Videos