๋ฐ˜์‘ํ˜•

๋น„ํŠธ ์—ฐ์‚ฐ์ž๋Š” ์ •์ˆ˜์˜ ์ด์ง„ ํ‘œํ˜„, ์ฆ‰ ๋น„ํŠธ(0๊ณผ 1) ๋‹จ์œ„๋กœ ๊ณ„์‚ฐํ•˜๋Š” ์—ฐ์‚ฐ์ž๋‹ค. ์ฃผ๋กœ ์„ฑ๋Šฅ ์ตœ์ ํ™”, ๋ฉ”๋ชจ๋ฆฌ ์ ˆ์•ฝ, ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ตฌํ˜„ ๋“ฑ์—์„œ ์‚ฌ์šฉํ•œ๋‹ค. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” 64๋น„ํŠธ ๋ถ€๋™์†Œ์ˆ˜์  ํ˜•์‹์œผ๋กœ ์ˆซ์ž๋ฅผ ์ €์žฅํ•˜์ง€๋งŒ, ๋น„ํŠธ ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•  ๋• ๋‚ด๋ถ€์ ์œผ๋กœ ํ”ผ์—ฐ์‚ฐ์ž๋ฅผ 32๋น„ํŠธ ์ •์ˆ˜๋กœ ๋ณ€ํ™˜ํ•œ๋‹ค. ์ด๋Š” ๋น„ํŠธ ์—ฐ์‚ฐ์ด ์ •์ˆ˜์—๋งŒ ์ ์šฉ๋˜๊ธฐ ๋•Œ๋ฌธ. ๋ณ€ํ™˜ ๊ณผ์ •์—์„œ ์†Œ์ˆ˜๋ถ€๋Š” ๋ฒ„๋ ค์ง€๊ณ  32๋น„ํŠธ ์ •์ˆ˜๋งŒ ์—ฐ์‚ฐ์— ์‚ฌ์šฉ๋œ๋‹ค.

 

๊ฐ€์žฅ ์™ผ์ชฝ์— ์žˆ๋Š” ๋น„ํŠธ๋Š” ๋ถ€ํ˜ธ ๋น„ํŠธ๋กœ ์‚ฌ์šฉ๋˜๋ฉฐ, 0์€ ์–‘์ˆ˜ 1์€ ์Œ์ˆ˜๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค

 

2์˜ ๋ณด์ˆ˜ ํ‘œํ˜„๋ฒ•


2์˜ ๋ณด์ˆ˜ ํ‘œํ˜„๋ฒ•์€ ๋น„ํŠธ๋ฅผ ์ด์šฉํ•ด ์Œ์ˆ˜๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ํ‘œ์ค€ ๋ฐฉ์‹์œผ๋กœ, ์ •์ˆ˜์˜ ์ด์ง„ ํ‘œํ˜„์—์„œ ๋ชจ๋“  ๋น„ํŠธ๋ฅผ ๋ฐ˜์ „์‹œํ‚จ ํ›„(1์˜ ๋ณด์ˆ˜) 1์„ ๋”ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๊ณ„์‚ฐํ•œ๋‹ค. ์ฆ‰, 1์˜ ๋ณด์ˆ˜์— 1์„ ๋”ํ•˜๋ฉด 2์˜ ๋ณด์ˆ˜๊ฐ€ ๋œ๋‹ค.

 

์ด๋•Œ ์ตœ์ƒ์œ„ ๋น„ํŠธ(Most Significant Bit; ๋ถ€ํ˜ธ ๋น„ํŠธ; ๊ฐ€์žฅ ์™ผ์ชฝ์— ์žˆ๋Š” ๋น„ํŠธ)๊ฐ€ 0์ด๋ฉด ์–‘์ˆ˜, 1์ด๋ฉด ์Œ์ˆ˜๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค. 2์˜ ๋ณด์ˆ˜ ํ‘œํ˜„๋ฒ•์€ ์Œ์ˆ˜๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๋ฐฉ์‹์ด๋ฏ€๋กœ ์–‘์ˆ˜๋Š” ์ด์ง„์ˆ˜ ํ‘œํ˜„์„ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•œ๋‹ค.

 

์Œ์ˆ˜ -5๋ฅผ 2์˜ ๋ณด์ˆ˜๋กœ ํ‘œํ˜„ํ•˜๋Š” ๊ณผ์ •์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

 

โถ ์ ˆ๋Œ€๊ฐ’(5)์˜ ์ด์ง„ ํ‘œํ˜„์„ ๊ตฌํ•œ๋‹ค.

 

โท 1์˜ ๋ณด์ˆ˜๋กœ ๋ณ€ํ™˜: ๋ชจ๋“  ๋น„ํŠธ๋ฅผ ๋ฐ˜์ „ ์‹œํ‚จ๋‹ค.

๊ฐ€์žฅ ์™ผ์ชฝ์— ์žˆ๋Š” ๋ถ€ํ˜ธ ๋น„ํŠธ๊ฐ€ 1์ด๋ฏ€๋กœ ์Œ์ˆ˜๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค

โธ 2์˜ ๋ณด์ˆ˜๋กœ ๋ณ€ํ™˜: ๋ฐ˜์ „๋œ ์ˆซ์ž์— 1์„ ๋”ํ•œ๋‹ค. ๋ชจ๋“  ๋น„ํŠธ๋ฅผ ๋ฐ˜์ „์‹œ์ผœ์„œ 1์˜ ๋ณด์ˆ˜๋ฅผ ๋งŒ๋“ค๋ฉด ์›๋ž˜ ์ ˆ๋Œ€๊ฐ’์—์„œ 1์ด ๊ฐ์†Œํ•˜๊ฒŒ ๋œ๋‹ค(5 → 4). ์ด๋ฅผ ๋ณด์™„ํ•˜๊ธฐ ์œ„ํ•ด 1์„ ๋”ํ•˜๋Š” ๊ฒƒ.

 

๋ฐ˜๋Œ€๋กœ 2์˜ ๋ณด์ˆ˜๋กœ ํ‘œํ˜„๋œ ์Œ์ˆ˜๋ฅผ 10์ง„์ˆ˜๋กœ ๋ณ€ํ™˜ํ•  ๋•, โ‘ ๋ชจ๋“  ๋น„ํŠธ๋ฅผ ๋ฐ˜์ „ ์‹œํ‚จ ํ›„(1์˜ ๋ณด์ˆ˜๋กœ ๋ณ€ํ™˜) โ‘ก1์„ ๋”ํ•œ ๋‹ค์Œ(2์˜ ๋ณด์ˆ˜๋กœ ๋ณ€ํ™˜) โ‘ข10์ง„์ˆ˜๋กœ ๋ณ€ํ™˜ํ•œ๋‹ค. ๋งˆ์ง€๋ง‰์œผ๋กœ โ‘ฃ๊ฒฐ๊ณผ๊ฐ’์— ์Œ์ˆ˜ ๋ถ€ํ˜ธ๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค.

 

 

๋น„ํŠธ ์—ฐ์‚ฐ์ž


AND, OR, XOR ์˜ˆ์‹œ๋Š” ํŽธ์˜๋ฅผ ์œ„ํ•ด 4๋น„ํŠธ๋กœ๋งŒ ํ‘œํ˜„ํ–ˆ๋‹ค. e.g. 5โ‚โ‚โ‚€โ‚Ž → 0101โ‚โ‚‚โ‚Ž

 

AND &

ํŠน์ • ๋น„ํŠธ๋ฅผ ํ™•์ธํ•˜๊ฑฐ๋‚˜ 0์œผ๋กœ ์„ค์ •ํ•  ๋•Œ ์ž์ฃผ ์‚ฌ์šฉ (๋น„ํŠธ๋งˆ์Šคํฌ์—์„  ๊ต์ง‘ํ•ฉ)

 

๋‘ ํ”ผ์—ฐ์‚ฐ์ž์˜ ๊ฐ ๋น„ํŠธ๋ฅผ ๋น„๊ตํ•˜์—ฌ ๋‘˜ ๋‹ค 1์ด๋ฉด 1 ๋ฐ˜ํ™˜, ์•„๋‹ˆ๋ฉด 0 ๋ฐ˜ํ™˜(๊ณฑ์—ฐ์‚ฐ).

const result = 5 & 3; // 1

 

 

AND ์—ฐ์‚ฐ์€ ๋น„ํŠธ๋งˆ์Šคํฌ ์ง‘ํ•ฉ ์—ฐ์‚ฐ์—์„œ ํŠน์ • ๋น„ํŠธ๋ฅผ ํฌํ•จํ–ˆ๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ๊ฒ€์‚ฌํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค. ๋น„ํŠธ๋งˆ์Šคํฌ๋Š” 2์ง„์ˆ˜์˜ ๊ฐ ๋น„ํŠธ๋ฅผ ์กฐ์ž‘ํ•˜์—ฌ ํŠน์ •ํ•œ ์ƒํƒœ๋‚˜ ๊ฐ’์„ ํ‘œํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.

let set = 10; // 2์ง„์ˆ˜ 1010
let flag = 8; // 2์ง„์ˆ˜ 1000

console.log((set & flag) === flag); // true

/*
  1010 (set) - 1010์€ 1000๊ณผ 10์„ ํ•ฉํ•œ ๊ฒƒ๊ณผ ๊ฐ™๋‹ค
& 1000 (flag)
------
  1000 (๊ฒฐ๊ณผ)
*/

 

OR |

์—ฌ๋Ÿฌ ๋น„ํŠธ ํ”Œ๋ž˜๊ทธ๋ฅผ ๊ฒฐํ•ฉํ•  ๋•Œ ์ž์ฃผ ์‚ฌ์šฉ (๋น„ํŠธ๋งˆ์Šคํฌ์—์„  ํ•ฉ์ง‘ํ•ฉ)

 

๋‘ ํ”ผ์—ฐ์‚ฐ์ž์˜ ๊ฐ ๋น„ํŠธ๋ฅผ ๋น„๊ตํ•˜์—ฌ ํ•˜๋‚˜๋ผ๋„ 1์ด๋ฉด 1 ๋ฐ˜ํ™˜, ๋‘˜ ๋‹ค 0์ด๋ฉด 0 ๋ฐ˜ํ™˜(ํ•ฉ์—ฐ์‚ฐ).

const result = 5 | 3; // 7

 

 

OR ์—ฐ์‚ฐ์€ ๋น„ํŠธ๋งˆ์Šคํฌ ์ง‘ํ•ฉ ์—ฐ์‚ฐ์—์„œ ํŠน์ • ๋น„ํŠธ๋ฅผ ์ถ”๊ฐ€ํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.

let set = 8; // 2์ง„์ˆ˜ 1000
let flag = 2; // 2์ง„์ˆ˜ 0010 (ํŽธ์˜๋ฅผ ์œ„ํ•ด 4๋น„ํŠธ๋กœ ํ‘œํ˜„)

set = set | flag; // set ์ง‘ํ•ฉ์— flag ์ถ”๊ฐ€
console.log(set); // 10 (2์ง„์ˆ˜ 1010)

/*
  1000 (set)
| 0010 (flag)
------
  1010 (๊ฒฐ๊ณผ)
*/

 

๋งŒ์•ฝ {1, 2, 3, 4, 5} ์ง‘ํ•ฉ์—์„œ 1, 3, 5๋ฅผ ๋ถ€๋ถ„ ์ง‘ํ•ฉ์„ ์„ ํƒํ•˜์—ฌ ๋น„ํŠธ๋งˆ์Šคํฌ๋กœ ํ‘œํ˜„ํ•˜๋ฉด 21(2์ง„์ˆ˜ 10101)์ด ๋œ๋‹ค. ์ฆ‰, 21์€ 0๋ฒˆ์งธ, 2๋ฒˆ์งธ, 4๋ฒˆ์งธ ๋น„ํŠธ๊ฐ€ ์„ค์ •๋œ ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค. ๋น„ํŠธ ์—ฐ์‚ฐ์€ O(1) ์ƒ์ˆ˜ ์‹œ๊ฐ„ ์•ˆ์— ์ˆ˜ํ–‰๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋ถ€๋ถ„ ์ง‘ํ•ฉ์„ ๋” ๋น ๋ฅด๊ณ  ํšจ์œจ์ ์œผ๋กœ ์กฐ์ž‘ํ•  ์ˆ˜ ์žˆ๋‹ค.

let set = 0;
set = set | (1 << 4); // 4๋ฒˆ ์ธ๋ฑ์Šค(5) ์ถ”๊ฐ€ -> 10000 (10์ง„์ˆ˜ 16)
set = set | (1 << 2); // 2๋ฒˆ ์ธ๋ฑ์Šค(3) ์ถ”๊ฐ€ -> 10100 (10์ง„์ˆ˜ 20)
set = set | (1 << 0); // 0๋ฒˆ ์ธ๋ฑ์Šค(1) ์ถ”๊ฐ€ -> 10101 (10์ง„์ˆ˜ 21)

// {1, 3, 5} ์ง‘ํ•ฉ์„ ๋น„ํŠธ๋งˆ์Šคํฌ๋กœ ํ‘œํ˜„ํ•˜๋ฉด 10101(10์ง„์ˆ˜ 21)์ด ๋œ๋‹ค

 

XOR ^

๋‘ ๊ฐ’์˜ ์ฐจ์ด์ ์„ ์ฐพ๊ฑฐ๋‚˜ ๋น„ํŠธ๋ฅผ ํ† ๊ธ€ํ•  ๋•Œ ์ž์ฃผ ์‚ฌ์šฉ

 

๋‘ ํ”ผ์—ฐ์‚ฐ์ž์˜ ๊ฐ ๋น„ํŠธ๋ฅผ ๋น„๊ตํ•˜์—ฌ ์„œ๋กœ ๋‹ค๋ฅด๋ฉด 1 ๋ฐ˜ํ™˜, ๊ฐ™์œผ๋ฉด 0 ๋ฐ˜ํ™˜. ๊ฐ ๋น„ํŠธ์— ๋Œ€ํ•œ ๋น„๊ต๋Š” ๋‘ ๋น„ํŠธ๋ฅผ ๋”ํ•œ ๋’ค mod(๋‚˜๋จธ์ง€ ์—ฐ์‚ฐ) 2 ํ•œ ๊ฒƒ๊ณผ ๊ฐ™๋‹ค.

const result = 5 ^ 3; // 6

 

 

NOT ~

ํŠน์ • ๋น„ํŠธ๋ฅผ 0์œผ๋กœ ์„ค์ •ํ•  ๋•Œ ์ž์ฃผ ์‚ฌ์šฉ

 

NOT ์—ฐ์‚ฐ์ž๋Š” ํ”ผ์—ฐ์‚ฐ์ž์˜ ๋ชจ๋“  ๋น„ํŠธ๋ฅผ ๋ฐ˜์ „์‹œํ‚จ๋‹ค. (1 → 0, 0 → 1)

const result = ~5; // -6

 

์–ด๋–ค ์ˆ˜ x์— NOT ๋น„ํŠธ ์—ฐ์‚ฐ์„ ํ•˜๋ฉด -(x + 1)์˜ ๊ฒฐ๊ณผ๋ฅผ ๋„์ถœํ•œ๋‹ค. ์˜ˆ๋ฅผ๋“ค์–ด ~5๋Š” -(5 + 1) = -6์œผ๋กœ ๊ณ„์‚ฐ๋œ๋‹ค. 2์˜ ๋ณด์ˆ˜ ํ‘œํ˜„๋ฒ•์—์„  ๋ชจ๋“  ๋น„ํŠธ๋ฅผ ๋ฐ˜์ „์‹œํ‚ค๊ณ  1์„ ๋”ํ•˜์ง€๋งŒ, NOT ๋น„ํŠธ ์—ฐ์‚ฐ์—์„  1์„ ๋”ํ•˜๋Š” ๋‹จ๊ณ„๊ฐ€ ์—†๋‹ค. ๋”ฐ๋ผ์„œ NOT ์—ฐ์‚ฐ์ž์˜ ๊ฒฐ๊ณผ๋Š” 1์˜ ๋ณด์ˆ˜์™€ ๋™์ผํ•˜๋ฉฐ, 2์˜ ๋ณด์ˆ˜์—์„œ 1์„ ๋บ€ ๊ฒƒ๊ณผ๋„ ๊ฐ™๋‹ค.

 

$$-(x+1) = -x-1$$

 

โถ ์ ˆ๋Œ€๊ฐ’(5)์„ 32๋น„ํŠธ ์ด์ง„ ํ‘œํ˜„์œผ๋กœ ๋ณ€ํ™˜

 

โท NOT ์—ฐ์‚ฐ ์ˆ˜ํ–‰ (๋น„ํŠธ ๋ฐ˜์ „; 1์˜ ๋ณด์ˆ˜๋กœ ๋ณ€ํ™˜)

๊ฐ€์žฅ ์™ผ์ชฝ์— ์žˆ๋Š” ๋ถ€ํ˜ธ ๋น„ํŠธ๊ฐ€ 1์ด๋ฏ€๋กœ ์Œ์ˆ˜๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค

โธ 10์ง„์ˆ˜๋กœ ๋ณ€ํ™˜: 2๋ฒˆ์—์„œ ๋ฐ˜์ „๋œ ๋น„ํŠธ์˜ ๊ฒฐ๊ณผ๋Š” 2์˜ ๋ณด์ˆ˜ ํ‘œํ˜„๋ฒ•์—์„œ ์Œ์ˆ˜๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค. ๋”ฐ๋ผ์„œ ์Œ์ˆ˜๋ฅผ ํ‘œํ˜„ํ•˜๊ธฐ ์œ„ํ•ด ๋ชจ๋“  ๋น„ํŠธ๋ฅผ ๋‹ค์‹œ ๋ฐ˜์ „ํ•˜๊ณ  1์„ ๋”ํ•ด์„œ 2์˜ ๋ณด์ˆ˜๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ณผ์ •์ด ํ•„์š”ํ•˜๋‹ค.

โ‘  ๋ชจ๋“  ๋น„ํŠธ ๋ฐ˜์ „
โ‘ก 2์˜ ๋ณด์ˆ˜๋กœ ๋ณ€ํ™˜
โ‘ข 10์ง„์ˆ˜ ๋ณ€ํ™˜ ํ›„ ์Œ์ˆ˜๋ถ€ํ˜ธ ์ถ”๊ฐ€

๋”๋ณด๊ธฐ

โถ -5๋Š” ์Œ์ˆ˜์ด๋ฏ€๋กœ 2์˜ ๋ณด์ˆ˜๋กœ ๋ณ€ํ™˜

 

โท NOT ์—ฐ์‚ฐ ์ˆ˜ํ–‰ (๋น„ํŠธ ๋ฐ˜์ „)

๊ฐ€์žฅ ์™ผ์ชฝ์— ์žˆ๋Š” ๋ถ€ํ˜ธ๊ฐ€ 0์ด๋ฏ€๋กœ ์–‘์ˆ˜๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค

โธ 10์ง„์ˆ˜๋กœ ๋ณ€ํ™˜ (2๋ฒˆ์—์„œ ๋ฐ˜์ „๋œ ๋น„ํŠธ๋Š” ์–‘์ˆ˜๋ฅผ ๋‚˜ํƒ€๋‚ด๋ฏ€๋กœ ๊ทธ๋Œ€๋กœ 10์ง„์ˆ˜๋กœ ๋ณ€ํ™˜)

 

NOT ์—ฐ์‚ฐ์€ ๋น„ํŠธ๋งˆ์Šคํฌ ์ง‘ํ•ฉ ์—ฐ์‚ฐ์—์„œ AND ์—ฐ์‚ฐ์ž์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜์—ฌ ํŠน์ • ๋น„ํŠธ๋ฅผ ์‚ญ์ œํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.

let set = 10; // 2์ง„์ˆ˜ 1010
let flag = 2; // 2์ง„์ˆ˜ 0010 (ํŽธ์˜๋ฅผ ์œ„ํ•ด 4๋น„ํŠธ๋กœ ํ‘œํ˜„)

set = set & ~flag; // set ์ง‘ํ•ฉ์—์„œ flag ์ œ๊ฑฐ
console.log(set); // 8 (2์ง„์ˆ˜ 1000)

/*
  1010 (set)
& 1101 (~flag) - flag๋ฅผ ๋ฐ˜์ „์‹œํ‚จ ๊ฒฐ๊ณผ
-------------
  1000 (๊ฒฐ๊ณผ)
*/

 

LEFT SHIFT <<

์ƒˆ๋กœ์šด ๋น„ํŠธ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ 2์˜ ๊ฑฐ๋“ญ์ œ๊ณฑ์„ ๊ณฑํ•  ๋•Œ ์ž์ฃผ ์‚ฌ์šฉ

 

์ฒซ ๋ฒˆ์งธ ํ”ผ์—ฐ์‚ฐ์ž์˜ ๋น„ํŠธ๋ฅผ ๋‘ ๋ฒˆ์งธ ํ”ผ์—ฐ์‚ฐ์ž๊ฐ€ ์ง€์ •ํ•œ ํšŸ์ˆ˜๋งŒํผ ์™ผ์ชฝ์œผ๋กœ ์ด๋™์‹œํ‚จ๋‹ค. ์™ผ์ชฝ์— ์ดˆ๊ณผ๋œ ๋น„ํŠธ๋Š” ๋ฒ„๋ ค์ง€๊ณ , ์˜ค๋ฅธ์ชฝ์— ์ƒ๊ธด ๋นˆ ๊ณต๊ฐ„์€ ์ด๋™ํ•œ๋งŒํผ 0์œผ๋กœ ์ฑ„์šด๋‹ค.

const result = 5 << 3; // 40 (5×2×2×2์™€ ๋™์ผ)

 

์™ผ์ชฝ ์‹œํ”„ํŠธ ์—ฐ์‚ฐ์€ ๊ฐ ๋น„ํŠธ๋ฅผ ์™ผ์ชฝ์œผ๋กœ 1์นธ ์ด๋™ํ•  ๋•Œ๋งˆ๋‹ค 2๋ฅผ ๊ณฑํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™๋‹ค. ์˜ˆ๋ฅผ๋“ค์–ด 2์ง„์ˆ˜ 10(10์ง„์ˆ˜ 2)์„ ์™ผ์ชฝ์œผ๋กœ ํ•œ ์นธ ์ด๋™์‹œํ‚ค๋ฉด 100(10์ง„์ˆ˜ 4)์ด ๋œ๋‹ค. ๋”ฐ๋ผ์„œ x << n ์—ฐ์‚ฐ์€ x × 2โฟ ๊ณผ ๊ฐ™๋‹ค.

 

์ •๋ฆฌํ•˜๋ฉด LEFT SHIFT ์—ฐ์‚ฐ์„ 1ํšŒ ์ง„ํ–‰ํ•  ๋•Œ๋งˆ๋‹ค ์ด์ง„์ˆ˜ ๊ฐ€์žฅ ์˜ค๋ฅธ์ชฝ์— 0์ด ํ•˜๋‚˜ ๋” ๋ถ™๋Š”๋‹ค๊ณ  ๋ณด๋ฉด ๋œ๋‹ค.

 

RIGHT SHIFT >>

2์˜ ๊ฑฐ๋“ญ์ œ๊ณฑ์œผ๋กœ ๋‚˜๋ˆŒ ๋•Œ ์ž์ฃผ ์‚ฌ์šฉ

 

๐Ÿ’ก 2์ง„์ˆ˜ ๊ธธ์ด์™€ ๊ฐ™๊ฑฐ๋‚˜ ๋” ๋งŽ์€ ๋น„ํŠธ๋ฅผ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์ด๋™์‹œํ‚ค๋ฉด ๊ฒฐ๊ณผ๋Š” ํ•ญ์ƒ 0์ด ๋œ๋‹ค. ์˜ˆ๋ฅผ๋“ค์–ด 2์ง„์ˆ˜ 11์„ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ํ•œ ๋ฒˆ ์‹œํ”„ํŠธํ•˜๋ฉด 01์ด ๋˜๊ณ , ํ•œ ๋ฒˆ ๋” ์‹œํ”„ํŠธํ•˜๋ฉด 0์ด ๋œ๋‹ค.

 

์ฒซ ๋ฒˆ์งธ ํ”ผ์—ฐ์‚ฐ์ž์˜ ๋น„ํŠธ๋ฅผ ๋‘ ๋ฒˆ์งธ ํ”ผ์—ฐ์‚ฐ์ž๊ฐ€ ์ง€์ •ํ•œ ํšŸ์ˆ˜๋งŒํผ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์ด๋™์‹œํ‚จ๋‹ค. ์˜ค๋ฅธ์ชฝ์— ์ดˆ๊ณผ๋œ ๋น„ํŠธ๋“ค์€ ๋ฒ„๋ ค์ง€๊ณ , ์™ผ์ชฝ์— ์ƒ๊ธด ๋นˆ ๊ณต๊ฐ„์€ ๊ธฐ์กด ์ตœ์ƒ์œ„ ๋น„ํŠธ(๋ถ€ํ˜ธ ๋น„ํŠธ)์˜ ๋ณต์‚ฌ๋ณธ์œผ๋กœ ์ฑ„์›Œ์ง„๋‹ค.

const result = 5 >> 3; // 0

 

์˜ค๋ฅธ์ชฝ ์‹œํ”„ํŠธ ์—ฐ์‚ฐ์€ ๊ฐ ๋น„ํŠธ๋ฅผ ์˜ค๋ฅธ์ชฝ์œผ๋กœ 1์นธ ์ด๋™ํ•  ๋•Œ๋งˆ๋‹ค 2๋ฅผ ๋‚˜๋ˆ„๋Š” ๊ฒƒ๊ณผ ๊ฐ™๋‹ค. ์˜ˆ๋ฅผ๋“ค์–ด 2์ง„์ˆ˜ 100(10์ง„์ˆ˜ 4)์„ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ํ•œ ์นธ ์ด๋™์‹œํ‚ค๋ฉด 010(10์ง„์ˆ˜ 2)๊ฐ€ ๋œ๋‹ค. ๋”ฐ๋ผ์„œ x >> n ์—ฐ์‚ฐ์€ x / 2โฟ ๊ณผ ๊ฐ™๋‹ค.

 

์ •๋ฆฌํ•˜๋ฉด RIGHT SHIFT ์—ฐ์‚ฐ์„ 1ํšŒ ์ง„ํ–‰ํ•  ๋•Œ๋งˆ๋‹ค ์ด์ง„์ˆ˜ ๊ฐ€์žฅ ์˜ค๋ฅธ์ชฝ์ด ํ•˜๋‚˜์”ฉ ์ž˜๋ฆฐ๋‹ค๊ณ  ๋ณด๋ฉด ๋œ๋‹ค.

 

UNSIGNED RIGHT SHIFT >>>

์–‘์ˆ˜ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์žฅํ•˜๋ฉด์„œ 2์˜ ๊ฑฐ๋“ญ์ œ๊ณฑ์œผ๋กœ ๋‚˜๋ˆŒ ๋•Œ ์ž์ฃผ ์‚ฌ์šฉ

 

์ฒซ ๋ฒˆ์งธ ํ”ผ์—ฐ์‚ฐ์ž์˜ ๋น„ํŠธ๋ฅผ ๋‘ ๋ฒˆ์งธ ํ”ผ์—ฐ์‚ฐ์ž๊ฐ€ ์ง€์ •ํ•œ ํšŸ์ˆ˜๋งŒํผ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์ด๋™์‹œํ‚จ๋‹ค. ์˜ค๋ฅธ์ชฝ์— ์ดˆ๊ณผ๋œ ๋น„ํŠธ๋Š” ๋ฒ„๋ ค์ง€๊ณ , ์™ผ์ชฝ์— ์ƒ๊ธด ๋นˆ ๊ณต๊ฐ„์€ ๋ถ€ํ˜ธ ๋น„ํŠธ์™€ ์ƒ๊ด€์—†์ด 0์œผ๋กœ ์ฑ„์šด๋‹ค. ๋•Œ๋ฌธ์— ํ•ญ์ƒ ์–‘์ˆ˜ ๊ฒฐ๊ณผ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.

const result = 5 >>> 3; // 0

 

์˜ค๋ฅธ์ชฝ ์‹œํ”„ํŠธ ์—ฐ์‚ฐ๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๊ฐ ๋น„ํŠธ๋ฅผ ์˜ค๋ฅธ์ชฝ์œผ๋กœ 1์นธ ์ด๋™ํ•  ๋•Œ๋งˆ๋‹ค 2๋กœ ๋‚˜๋ˆ„๋Š” ๊ฒƒ๊ณผ ๊ฐ™๋‹ค. ๋”ฐ๋ผ์„œ x >>> n ์—ฐ์‚ฐ์€ x / 2โฟ ๊ณผ ๊ฐ™๋‹ค.

 

 

๋ฏธ๋ฆฝ์ž ํŒ


0b(2์ง„์ˆ˜), 0o(8์ง„์ˆ˜), 0x(16์ง„์ˆ˜) ์ ‘๋‘์‚ฌ๋ฅผ ์ด์šฉํ•ด ์ง„์ˆ˜๋ฅผ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ฐธ๊ณ ๋กœ ํŒŒ์ด์ฌ์—์„œ๋„ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์™€ ๋™์ผํ•œ ์ ‘๋‘์‚ฌ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. C/C++, Java ์—์„  8์ง„์ˆ˜์— ์‚ฌ์šฉํ•˜๋Š” 0 ์ ‘๋‘์‚ฌ๋งŒ ๋‹ค๋ฅด๊ณ  ๋‚˜๋จธ์ง„ ๋™์ผํ•˜๋‹ค.

const binary = 0b1100100; // 2์ง„์ˆ˜
const octal = 0o144; // 8์ง„์ˆ˜
const hex = 0x64 // 16์ง„์ˆ˜

console.log(binary, octal, hex); // 100, 100, 100

console.log(binary === 100); // true
console.log(octal === 100); // true
console.log(hex === 100); // true

 

 

๋ ˆํผ๋Ÿฐ์Šค


2์˜ ๋ณด์ˆ˜ ๊ณ„์‚ฐ๊ธฐ | yeecord

์‹ ๋ฐ ์—ฐ์‚ฐ์ž - JavaScript | MDN

 


๊ธ€ ์ˆ˜์ •์‚ฌํ•ญ์€ ๋…ธ์…˜ ํŽ˜์ด์ง€์— ๊ฐ€์žฅ ๋น ๋ฅด๊ฒŒ ๋ฐ˜์˜๋ฉ๋‹ˆ๋‹ค. ๋งํฌ๋ฅผ ์ฐธ๊ณ ํ•ด ์ฃผ์„ธ์š”
๋ฐ˜์‘ํ˜•