>  기사  >  웹 프론트엔드  >  자바스크립트에서 비트 부정을 수행하는 방법

자바스크립트에서 비트 부정을 수행하는 방법

青灯夜游
青灯夜游원래의
2021-12-07 12:11:493178검색

JavaScript에서는 "~" 연산자를 사용하여 "~ 피연산자" 구문으로 비트 부정을 구현할 수 있습니다. "~" 연산자는 지정된 피연산자를 이진 정수 형식으로 변환하고 이진 피연산자를 하나씩 수행할 수 있습니다. 비트가 반전됩니다.

자바스크립트에서 비트 부정을 수행하는 방법

이 튜토리얼의 운영 환경: Windows 7 시스템, JavaScript 버전 1.8.5, Dell G3 컴퓨터.

JavaScript에서는 "~" 연산자를 사용하여 비트 부정을 구현할 수 있습니다. 예를 들어 ~1 = -2, ~-3=2, ~true=-2, ~false=-1

"~" 연산자는 지정된 값의 이진 표현을 보고 이진 피연산자를 비트 단위로 가져올 수 있습니다. . 역연산

  • 1단계: 피연산자를 32비트 이진 정수로 변환합니다.

  • 2단계: 반전 연산을 비트 단위로 수행합니다.

  • 3단계: 이진수 1의 보수를 십진수 부동 소수점 숫자로 변환합니다.

12에 비트 단위 NOT 연산을 수행하면 반환 값은 -13입니다.

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

다음 그림은 12에 대해 비트별 NOT 연산을 수행하는 과정을 산술식 형태로 분석한 것입니다.

자바스크립트에서 비트 부정을 수행하는 방법

비트 반전 계산 방법

  비트 반전의 연산 규칙 및 단계:

  1. 10진수를 원본 코드로 변환

2진 원본 코드로 변환, 최상위 비트는 부호 비트, 0은 양수, 1은 음수

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

  2. 원래 코드를 역코드로 변환

양수의 역코드가 원래 코드, 음수의 역코드가 부호 비트

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

3. 역코드 2의 보수로 변환

양수의 보수는 여전히 원래 코드이고, 음수의 보수는 보수에 1을 더하는 것입니다. 보수

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

4. 보수를 반전하여 원래 코드를 얻습니다

양의 정수 보수를 뒤집습니다. 그 후 기호 위치는 1이므로 음의 정수이므로 음의 정수 방법에 따라 보수를 계산합니다. 원래 코드를 얻기 위한 역연산

 원래 코드를 얻기 위한 역연산, 먼저 역보를 역코드로 변환합니다. 공식 : 1의 보수 코드 = 1의 보수 - 1, 그런 다음 1의 보수 코드를 1의 보수 코드로 변환합니다. 원래 코드에서는 부호 비트는 그대로 유지되고 다른 비트는 반전됩니다

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

  음의 정수의 보수가 반전된 후 부호 위치는 0이 되는데, 이는 양의 정수이므로 양의 정수입니다. 1의 보수와 1의 보수 정수 그 자체이므로 역연산을 할 필요가 없습니다

  十进制  ---->    原码    ---->   反码     ---->   补码      ---->   补码取反得原码  
    -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 학습 튜토리얼

위 내용은 자바스크립트에서 비트 부정을 수행하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.