å³ã·ããæ¼ç®å (>>)
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æ.
å³ã·ããæ¼ç®å (>>) ã¯ã 1 ã¤ç®ã®ãªãã©ã³ããæå®ããããããæ°ã ãå³ã«ãããããã¤ããªã¼è¡¨ç¾ãæã¤ãæ°å¤ã¾ãã¯é·æ´æ°ãè¿ãã¾ããå³ã«ãããã¦ããµãããããã¯ç ´æ£ãããæãå·¦ã®ããããã³ãã¼ãã¦å
¥ãã¾ãããã®æ¼ç®ã¯ã符å·ä¼æå³ã·ãããã¾ãã¯ãç®è¡å³ã·ãããã¨ãå¼ã°ãã¦ãã¾ããããã¯çµæã®æ°å¤ã®ç¬¦å·ã 1 ã¤ç®ã®ãªãã©ã³ãã®ç¬¦å·ã¨åãã§ããããã§ãã
試ãã¦ã¿ã¾ããã
const a = 5; // 00000000000000000000000000000101
const b = 2; // 00000000000000000000000000000010
const c = -5; // 11111111111111111111111111111011
console.log(a >> b); // 00000000000000000000000000000001
// äºæ³ãããçµæ: 1
console.log(c >> b); // 11111111111111111111111111111110
// äºæ³ãããçµæ: -2
æ§æ
x >> y
解説
>> æ¼ç®åã¯ãæ°å¤ã¨é·æ´æ°ã® 2 種é¡ã®ãªãã©ã³ãã«å¯¾ãã¦ãªã¼ãã¼ãã¼ãããã¦ãã¾ããæ°å¤ã®å ´åããã®æ¼ç®å㯠32 ãããæ´æ°ãè¿ãã¾ãã é·æ´æ°ã®å ´åãæ¼ç®åã¯é·æ´æ°ãè¿ãã¾ããæåã®ä¸¡ãªãã©ã³ããæ°å¤åã«å¤æãããããã®åãæ¤æ»ãã¾ãã両ãªãã©ã³ããé·æ´æ°ã«ãªã£ãå ´åãé·æ´æ°ã®å³ã·ãããå®è¡ãã¾ããããã§ãªãå ´åã両ãªãã©ã³ãã 32 ãããæ´æ°ã«å¤æããæ°å¤ã®å³ã·ãããå®è¡ãã¾ãã䏿¹ã®ãªãã©ã³ããé·æ´æ°ã«ãªãããã䏿¹ãæ°å¤ã«ãªã£ãå ´åã TypeError ãçºçãã¾ãã
æãå·¦ã®ãããã以åã®æãå·¦ã®ãããã¨åãã«ãªãããã符å·ããã (æãå·¦ã®ããã) ã¯å¤åãã¾ããããã£ã¦ã符å·ç¶æãã¨ããååã§ãã
ãã®æ¼ç®åã¯ãå·¦ãªãã©ã³ãã®ããã表ç¾ã 2 ã®è£æ°ã§æ¼ç®ãã¾ãã 10 鲿°ã® 9 㨠-9 ã® 32 ããã 2 é²è¡¨ç¾ãèãã¦ã¿ã¾ãããã
9 (10 鲿°): 00000000000000000000000000001001 (2 鲿°)
-9 (10 鲿°): 11111111111111111111111111110111 (2 鲿°)
2 ã®è£æ°æ³ã«ãããè² ã® 10 鲿°å¤ -9 ã® 2 é²è¡¨ç¾ã¯ããã®çµ¶å¯¾å¤ã§ãã 9 ï¼2 鲿°ã§ 00000000000000000000000000001001ï¼ã®ãã¹ã¦ã®ããããå転ããã 1 ãå ç®ãããã¨ã§å½¢æãã¾ãã
ã©ã¡ãã®å ´åãã 2 鲿°å¤ã®ç¬¦å·ã¯æå·¦ç«¯ã®ãããã«ãã£ã¦æå®ããã¾ããæ£ã® 10 鲿° 9 ã®å ´åã 2 é²è¡¨ç¾ã®æå·¦ç«¯ããã㯠0 ã§ãããè² ã® 10 鲿° -9 ã®å ´åã 2 é²è¡¨ç¾ã®æå·¦ç«¯ããã㯠1 ã§ãã
10 鲿°ã® 9 㨠-9 ã® 2 é²è¡¨ç¾ãæå®ãããå ´åãè¦ã¦ã¿ã¾ãããã
9 >> 2 㯠2 ã¨ãªãã¾ãã
9 (10 鲿°): 00000000000000000000000000001001 (2 鲿°)
--------------------------------
9 >> 2 (10 鲿°): 00000000000000000000000000000010 (2 鲿°) = 2 (10 鲿°)
å³ç«¯ã® 2 ãããã§ãã 01 ãããã¦å¤ãã左端ã®ããã 0 ãå·¦ãã 2 åã³ãã¼ãããã¨ãããã¨ã«æ³¨ç®ãã¦ãã ããã
-9 >> 2 㯠-3 ã¨ãªãã¾ãã
-9 (10 鲿°): 11111111111111111111111111110111 (2 鲿°)
--------------------------------
-9 >> 2 (10 鲿°): 11111111111111111111111111111101 (2 鲿°) = -3 (10 鲿°)
å³ç«¯ã® 2 ãããã§ãã 11 ãããã¦æ¶ãã¦ãããã¨ã«æ³¨ç®ãã¦ãã ãããããã左端ã®ãããã«ã¤ãã¦ã¯ããã®å ´å左端ããã㯠1 ã§ããã¤ã¾ã左端㮠1 ãããã 2 ã¤ãå·¦ããããã¦å
¥ã£ã¦ãããã¨ã«ãªãã¾ããããã«ããè² ã®ç¬¦å·ãä¿æããã¾ãã
2 é²è¡¨ç¾ 1111111111111111111111111111101 ã¯ãè² ã® 10 鲿°å¤ -3 ã«çãããªãã¾ããããã¹ã¦ã®è² ã®æ´æ°ã¯ 2 ã®è£æ°ã¨ãã¦æ ¼ç´ããã¾ããæ£ã®å¤ï¼10 鲿°ï¼ 3 ã® 2 é²è¡¨ç¾ 00000000000000000000000000000011 ã®ãã¹ã¦ã®ããããå転ãã 1 ãå ç®ãããã¨ã§ç®åºãããã¨ãã§ãã¾ãã
å·¦ãªãã©ã³ãã 32 ããããè¶ ããæ°å¤ã®å ´åãä¸ä½å´ã®ããããç ´æ£ããã¾ããä¾ãã°ã以ä¸ã® 32 ããããè¶ ããæ´æ°ã¯ 32 ãããæ´æ°ã«å¤æããã¾ãã
Before: 11100110111110100000000000000110000000000001 After: 10100000000000000110000000000001
å³ãªãã©ã³ãã¯ç¬¦å·ãªã 32 ãããæ´æ°ã«å¤æããããã®å¾ã¢ã¸ã¥ã 32 ãåããã¾ãããããã£ã¦ãå®éã®ã·ããéã¯å¸¸ã« 0 ä»¥ä¸ 31 以ä¸ã®æ£ã®æ´æ°ã¨ã¿ãªããã¾ããä¾ãã°ã100 >> 32 㯠100 >> 0 ã¨åãçµæ (100) ã«ãªãã¾ãããã㯠32 ã¢ã¸ã¥ã 32 ã 0 ã¨ãªãããã§ãã
è¦å:
æ´æ°ã«åãè©°ããããã« >> 0 ã使ç¨ããä¾ãè¦ãããããããã¾ãããä»»æã®æ°å¤ x ã 0 ãããå³ã·ããããã¨ãx ã 32 ãããæ´æ°ã«å¤æãããããã« -2147483648 ãã 2147483647 ã®ç¯å²å¤ã®æ°ã®å
è¡ããããé¤å»ãããçµæãå¾ããã¾ãã代ããã«Math.trunc()ã使ç¨ãã¦ãã ããã
é·æ´æ°ã§ã¯åãæ¨ã¦ã¯çºçãã¾ãããæ¦å¿µçã«ã¯ãæ£ã®é·æ´æ°ã¯å
é ã«ç¡éã® 0 ããããæã¡ãè² ã®é·æ´æ°ã¯å
é ã«ç¡éã® 1 ããããæã¤ã¨è§£éãã¾ãã
ä¾
>å³ã·ããã®ä½¿ç¨
9 >> 2; // 2
-9 >> 2; // -3
9n >> 2n; // 2n
仿§æ¸
| Specification |
|---|
| ECMAScript® 2027 Language Specification> # sec-signed-right-shift-operator> |