ãããå¦å®æ¼ç®å (~)
Baseline
Widely available
This feature is well established and works across many devices and browser versions. Itâs been available across browsers since 2015å¹´7æ.
ãããå¦å® (~) æ¼ç®åã¯ãäºé²æ°è¡¨ç¾ã«ããã¦ããªãã©ã³ãã®å¯¾å¿ãããããã 0 ã§ãããããä½ç½®ã« 1 ãããã以å¤ã®ãããä½ç½®ã« 0 ãè¨å®ããæ°å¤ã¾ãã¯é·æ´æ°ãè¿ãã¾ãã
試ãã¦ã¿ã¾ããã
const a = 5; // 00000000000000000000000000000101
const b = -3; // 11111111111111111111111111111101
console.log(~a); // 11111111111111111111111111111010
// äºæ³ãããçµæ: -6
console.log(~b); // 00000000000000000000000000000010
// äºæ³ãããçµæ: 2
æ§æ
~x
解説
~ æ¼ç®åã¯ãæ°å¤ã¨é·æ´æ°ã® 2 種é¡ã®ãªãã©ã³ãã«å¯¾ãã¦ãªã¼ãã¼ãã¼ãããã¦ãã¾ããæ°å¤ã®å ´åããã®æ¼ç®å㯠32 ãããæ´æ°ãè¿ãã¾ããé·æ´æ°ã®å ´åãæ¼ç®åã¯é·æ´æ°ãè¿ãã¾ããæåã®ãªãã©ã³ããæ°å¤åã«å¤æãããã®åãæ¤æ»ãã¾ãããªãã©ã³ããé·æ´æ°ã«ãªã£ãå ´åãé·æ´æ°ã® NOT ãå®è¡ãã¾ããããã§ãªãå ´åããªãã©ã³ãã 32 ãããæ´æ°ã«å¤æããæ°å¤ã®ãããåä½ã® NOT ãå®è¡ãã¾ãã
ãã®æ¼ç®åã¯ããªãã©ã³ãã®ããã表ç¾ã 2 ã®è£æ°ã§æä½ãã¾ããæ¼ç®åã¯ããããã®ãããã«é©ç¨ãããçµæã¯ãããåä½ã§æ§ç¯ããã¾ãã
NOT æ¼ç®ã®ççå¤è¡¨ã¯æ¬¡ã®ããã«ãªãã¾ãã
| x | NOT x |
|---|---|
| 0 | 1 |
| 1 | 0 |
9 (10 鲿°) = 00000000000000000000000000001001 (2 鲿°)
--------------------------------
~9 (10 鲿°) = 11111111111111111111111111110110 (2 鲿°) = -10 (10 鲿°)
ããæ° x ã®ãããå¦å® 㯠-(x + 1) ã«ãªãã¾ããä¾ãã°ã~-5 㯠4 ã«ãªãã¾ãã
æ°å¤ã 32 ããããè¶ ããå ´åãæä¸ä½ããããåãæ¨ã¦ããã¾ããä¾ãã°ã次㮠32 ããããè¶ ããæ´æ°ã¯ã 32 ãããæ´æ°ã«å¤æããã¾ãã
Before: 11100110111110100000000000000110000000000001 After: 10100000000000000110000000000001
è¦å:
æ°å¤ãæ´æ°ã«åãè©°ããããã« ~~ ã使ç¨ãã人ãç®ã«ããããããã¾ãããä»»æã®æ°å¤ x ã«ãããåä½ã® NOT æ¼ç®ã 2 åé©ç¨ããã¨ã x ã 32 ãããæ´æ°ã«å¤æããå¤ãå¾ãã ã¾ããã -2147483648 ãã 2147483647 ã®ç¯å²å¤ã«ããå¤ã«ã¤ãã¦ã¯å
é ã®ããããé¤å»ããããã¨ã«ãªãã¾ãã代ããã« Math.trunc() ã使ç¨ãããã使ç¨ãã¦ãã ããã
é·æ´æ°ã®å ´åãåãæ¨ã¦ã¯çºçãã¾ãããæ¦å¿µçã«ã¯ãæ£ã®å¤ã®é·æ´æ°ã¯å
é ã«ç¡éã® 0 ãããããããè² ã®å¤ã®é·æ´æ°ã¯å
é ã«ç¡éã® 1 ãããããããã®ã¨çè§£ãã¦ãã ããã
ä¾
>ãããå¦å®ã®ä½¿ç¨
~0; // -1
~-1; // 0
~1; // -2
~0n; // -1n
~4294967295n; // -4294967296n
仿§æ¸
| Specification |
|---|
| ECMAScript® 2027 Language Specification> # sec-bitwise-not-operator> |