首頁  >  文章  >  web前端  >  javascript怎麼進行位元求反

javascript怎麼進行位元求反

青灯夜游
青灯夜游原創
2021-12-07 12:11:493178瀏覽

在javascript中,可以利用「~」運算子來實現位元求反,語法「~ 運算數」;「~」運算子可以將指定運算數轉為二進位整數形式,並對該二進位操作數逐位進行取反操作。

javascript怎麼進行位元求反

本教學操作環境:windows7系統、javascript1.8.5版、Dell G3電腦。

在javascript中,可以利用「~」運算子來實現位元求反。如~1 = -2,~-3=2,~true=-2,~false=-1

「~」運算子可以查看指定值的二進位表示形式,並對該二進位運算元逐位進行取反操作

  • 第1 步:把運算數轉換為32 位元的二進位整數。

  • 第 2 步:逐位進行取反操作。

  • 第 3 步:把二進位反碼轉換成十進位浮點數。

對 12 進行位元非運算,則傳回值為 -13。

console.log( ~ 12 );  //返回值-13

下圖以算式的形式解析了對 12 進行位非運算的過程。

javascript怎麼進行位元求反

如何以位元取反計算

  位元取反的運算規則步驟:

  1、十進位轉成原碼

  轉成二進位原碼,最高位是符號位,0為正數,1為負數

    十进制   ---->  原码
      1   ---->  00000001
     -1   ---->  10000001

  2、原碼轉成反碼

  正數的反碼就是原碼,負數的反碼是符號位不變,其餘位取反

    十进制  ---->   原码    ---->  反码
      1    ----> 00000001 ----> 00000001
     -1    ----> 10000001 ----> 11111110

  3、反碼轉成補碼

  正數的補碼還是原碼,負數的補碼是在反碼的基礎上加1

    十进制  ---->    原码   ---->   反码   ---->  补码
      1    ----> 00000001 ----> 00000001 ----> 00000001
     -1    ----> 10000001 ----> 11111110 ----> 11111111

  4、補碼取反得原碼

  正整數補碼取反之後符號位置為1,是一個負整數,所以再按照負整數計算補碼的方式逆運算得到原碼

  逆運算得到原碼,首先將取反的補碼轉成反碼,公式:反碼=補碼- 1,然後將反碼轉成原碼,符號位不變,其他位取反

  十进制  ---->    原码    ---->   反码    ---->   补码     ---->  补码取反   ---->  取反补码转成反码  ---->  转成原码
    1   ----> 00000001  ----> 0000001  ---->  00000001  ----> 11111110   ---->   11111101    ---->  10000010

  負整數補碼取反之後符號位置為0,是一個正整數,因正整數的反碼與補碼就是本身,所以不需要再進行逆運算

  十进制  ---->    原码    ---->   反码     ---->   补码      ---->   补码取反得原码  
    -1  ---->  10000001  ----> 11111110  ---->  11111111   ---->     00000000    

  5、將原碼轉成二進位

 十进制  ---->    原码    ---->   反码    ---->   补码     ---->  补码取反   ---->  取反补码转成反码  ---->  转成原码  ---->  转成二进制
    1   ----> 00000001  ----> 0000001  ---->  00000001  ----> 11111110   ---->   11111101    ---->  10000010 ---->   -2
  十进制  ---->    原码    ---->   反码     ---->   补码      ---->   补码取反得原码   ---->  转成二进制
    -1  ---->  10000001  ----> 11111110  ---->  11111111   ---->    00000000     ---->     0

  所以,~1=-2,~-1=0

取反再取反~~的作用

  運算子~, 是位元取反的意思,表面上~~(取反再取反)沒有意義,實際上在JS中可以將浮點數變成整數

 console.log(~~1.11);          //1
 console.log(~~-25.11);       //-25

【相關推薦:javascript學習教學

#

以上是javascript怎麼進行位元求反的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn