æä½éï¼~ï¼
åºçº¿
广æ³å¯ç¨
èª 2015å¹´7æ èµ·ï¼æ¤ç¹æ§å·²å¨ä¸»æµæµè§å¨ä¸å¾å°æ¯æï¼å¯å¨å¤§å¤æ°è®¾å¤åæµè§å¨çæ¬ä¸æ£å¸¸ä½¿ç¨ã
æä½éè¿ç®ç¬¦ï¼~ï¼å°æä½æ°çä½å转ãå¦åå
¶ä»ä½è¿ç®ç¬¦ä¸æ ·ï¼å®å°æä½æ°è½¬å为 32 ä½çæç¬¦å·æ´åã
å°è¯ä¸ä¸
const a = 5; // 00000000000000000000000000000101
const b = -3; // 11111111111111111111111111111101
console.log(~a); // 11111111111111111111111111111010
// Expected output: -6
console.log(~b); // 00000000000000000000000000000010
// Expected output: 2
è¯æ³
~a
æè¿°
æä½æ°è¢«è½¬æ¢ä¸º 32 ä½æç¬¦å·æ´åï¼å¹¶ä»¥ä¸ç³»åæ¯ç¹ï¼0 å 1ï¼è¡¨ç¤ºãè¶ è¿ 32 ä½çæ°åå°ä¸¢å¼å ¶æé«ææä½ãå¦ä¸ä¾åä¸ï¼è¶ è¿ 32 ä½çæ´æ°å°è½¬æ¢ä¸º 32 使´æ°ï¼
Before: 11100110111110100000000000000110000000000001 After: 10100000000000000110000000000001
è¿ç®ç»æçæ¯ä¸ä½æ°é½ç±æä½æ°ç¸åºä½åè½¬èæ¥ã
NOT è¿ç®ççå¼è¡¨å¦ä¸æç¤ºï¼
| a | NOT a |
|---|---|
| 0 | 1 |
| 1 | 0 |
9 (base 10) = 00000000000000000000000000001001 (base 2)
--------------------------------
~9 (base 10) = 11111111111111111111111111110110 (base 2) = -10 (base 10)
32 ä½æç¬¦å·æ´æ°æä½æ°æ ¹æ®è¡¥ç è¿ç®è§åè¿è¡å转ï¼ä¹å°±æ¯è¯´ï¼æé«ææä½è¡¨ç¤ºè´æ°ã
æä½éè¿ç®æ¶ï¼ä»»ä½æ°å x çè¿ç®ç»æé½æ¯ -(x + 1)ãä¾å¦ï¼~-5 è¿ç®ç»æä¸º 4ã
请注æï¼ç±äºæ°å ~-1 å ~4294967295ï¼232 - 1ï¼åä½¿ç¨ 32 ä½è¡¨ç¤ºå½¢å¼ï¼å®ä»¬çè¿ç®ç»æå为 0ã
示ä¾
>ä½¿ç¨æä½åå
~0; // -1
~-1; // 0
~1; // -2
è§è
| è§è |
|---|
| ECMAScript® 2027 Language Specification> # sec-bitwise-not-operator> |