Bitwise Operators in Javascript - Lee-hyuna/33-js-concepts-kr GitHub Wiki

Bitwise Operators in Javascript

λ²ˆμ—­ : https://medium.com/bother7-blog/bitwise-operators-in-javascript-65c4c69be0d3

μ§€κΈˆκΉŒμ§€ μš°λ¦¬κ°€ μž‘μ—… ν•œ 두 가지 ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄λŠ” Ruby와 Javascriptμž…λ‹ˆλ‹€. 이 λ‘˜ μ‚¬μ΄μ—λŠ” λ§Žμ€ 차이점이 μžˆμ§€λ§Œ 논점을 λ‹€λ£¨λŠ” 방법은 곡톡점이 μžˆμŠ΅λ‹ˆλ‹€. ANDλŠ” &&둜 ν‘œν˜„λ˜κ³ , ORλŠ” || λ“±μœΌλ‘œ ν‘œν˜„λ©λ‹ˆλ‹€. μš°λ¦¬λŠ” &&와 || 같은 이쀑 기호 μ—°μ‚°μžλ₯Ό μ‚¬μš©ν•˜λŠ” 데 μ΅μˆ™ν•©λ‹ˆλ‹€. μ™œ μš°λ¦¬λŠ” 단일 기호λ₯Ό μ‚¬μš©ν•  수 μ—†μŠ΅λ‹ˆκΉŒ? 단일 심볼은 λΉ„νŠΈ μ—°μ‚°μžμ— μ˜ˆμ•½λ˜μ–΄ 있기 λ•Œλ¬Έμž…λ‹ˆλ‹€.

<iframe src="https://giphy.com/embed/l1AsPGi3X2rLKeuxW" width="480" height="270" frameBorder="0" class="giphy-embed" allowFullScreen></iframe>

via GIPHY

λΉ„νŠΈ μ—°μ‚°μž λž€ λ¬΄μ—‡μž…λ‹ˆκΉŒ? 그것듀은 λΉ„νŠΈ μˆ˜μ€€μ—μ„œ λ³€μˆ˜μ™€ μƒν˜Έ μž‘μš©ν•˜λŠ” λ°©λ²•μž…λ‹ˆλ‹€. λΉ„νŠΈλŠ” 일반적으둜 뢀동 μ†Œμˆ˜μ  및 μ •μˆ˜λ‘œ λ³€ν™˜λ˜λ―€λ‘œ 정보λ₯Ό μ‰½κ²Œ μ†Œν™” ν•  수 μžˆμŠ΅λ‹ˆλ‹€. μš°λ¦¬κ°€ 속도와 νš¨μœ¨μ„±μ„ μ€‘μš”μ‹œν•œλ‹€λ©΄ λΉ„νŠΈλ₯Ό 직접 μ²˜λ¦¬ν•˜κ³  κ·Έ λ³€ν™˜μ„ floats / int둜 κ±΄λ„ˆ λ›°λŠ” 것이 유용 ν•  κ²ƒμž…λ‹ˆλ‹€. λΉ„νŠΈλŠ” μžλ°” 슀크립트의 λ³€μˆ˜λ³΄λ‹€ λΉ λ₯΄μ§€ 만 λ²ˆμ—­ μˆ˜μ€€μ„ κ±΄λ„ˆ λ›°λŠ” 것보닀 λ³΅μž‘ν•©λ‹ˆλ‹€.

λΉ„νŠΈ λ‹¨μœ„μ˜ λ‹¨μˆœν•œ 숫자

1 (integer) = 0001 (binary)

2 = 0010

3 = 0011

4 = 0100

5 = 0101

6 = 0110

7 = 0111

8 = 1000

λΉ„νŠΈ μ—°μ‚°μž (AND, OR, XOR)λŠ” 일반 논리 μ—°μ‚°μžμ™€ λΉ„μŠ·ν•˜κ²Œ λ™μž‘ν•©λ‹ˆλ‹€. 단, λΉ„νŠΈ μˆ˜μ€€μ—μ„œλŠ” ν‰κ°€ν•˜μ§€λ§Œ 논리λ₯Ό μ •μƒμ μœΌλ‘œ ν•΄μ„ν•˜λŠ” 방식이 μ•„λ‹™λ‹ˆλ‹€. λ‹€μŒμ€ λΉ„νŠΈ μ—°μ‚°μžμ™€ 일반 논리 μ—°μ‚°μžμ˜ 차이점에 λŒ€ν•œ μ˜ˆμž…λ‹ˆλ‹€.

https://cdn-images-1.medium.com/max/1600/1*v_EFpqIO1FQ_FxbpImiC1g.png

정상적인 논리 μ—°μ‚°μžλŠ” μ–‘μͺ½ λͺ¨λ‘κ°€ 참일 λ•Œ κ°€μž₯ 였λ₯Έμͺ½ 값을 λ°˜ν™˜ν•©λ‹ˆλ‹€.

https://cdn-images-1.medium.com/max/1600/1*R1solcujsnK83PBpQ44fMA.png

λΉ„νŠΈ μ—°μ‚°μžλŠ” 일반 논리 μ—°μ‚°μžμ™€ λ‹€λ₯Έ μˆ˜μ€€μ—μ„œ 3κ³Ό 6을 ν‰κ°€ν•©λ‹ˆλ‹€.

3 & 6의 κ²°κ³ΌλŠ” μ–΄λ–»κ²Œ 2와 같을 수 μžˆμŠ΅λ‹ˆκΉŒ? μš°λ¦¬λŠ” 3 & 6을 λ³Έλ‹€. κ·ΈλŸ¬λ‚˜ 사싀은 μ•„λž˜μ™€ κ°™λ‹€. https://cdn-images-1.medium.com/max/1600/1*QAWLF8Z3_S6T0A5P4vpGvg.png

3 & 6

이 두 λΉ„νŠΈμ˜ 곡톡 λΆ„λͺ¨κ°€ 두 번째 숫자이기 λ•Œλ¬Έμ— κ²°κ³ΌλŠ” 2μž…λ‹ˆλ‹€.

https://cdn-images-1.medium.com/max/1600/1*qZKhSPEV8JsWMS-eTknnKg.png

곡톡 μˆ«μžλŠ” 였λ₯Έμͺ½μ—μ„œ 두 번째 숫자이고이 λΉ„νŠΈλŠ” 숫자 2λ₯Ό λ‚˜νƒ€λƒ…λ‹ˆλ‹€.

λΉ„νŠΈ μ—°μ‚°μžκ°€ μš°λ¦¬κ°€ μ΅μˆ™ν•œ 것과 λ‹€λ₯Έ μˆ˜μ€€μ—μ„œ μž‘λ™ν•œλ‹€λŠ” 것이 ν™•μ‹€ν•©λ‹ˆλ‹€. λΉ„νŠΈ μ—°μ‚°μžλ₯Ό μ‚¬μš©ν•˜λ©΄ μ–΄λ–€ 이점이 μžˆμŠ΅λ‹ˆκΉŒ? μ΄λŸ¬ν•œ μž‘μ—…μ„μœ„ν•œ μ‹€μ œ μ‘μš© ν”„λ‘œκ·Έλž¨μ„ μ°ΎλŠ” 것이 유용 ν•  κ²ƒμž…λ‹ˆλ‹€. λΉ„νŠΈ μˆ˜μ€€μ—μ„œμ˜ ν‰κ°€λŠ” 일반 논리 μ—°μ‚°μžλ³΄λ‹€ λΉ λ₯΄κΈ° λ•Œλ¬Έμ— 큰 μƒ˜ν”Œμ— λŒ€ν•œ 평가 λ˜λŠ” λ°˜λ³΅μ€ λΉ„νŠΈ μ—°μ‚°μ—μ„œλ³΄λ‹€ νš¨μœ¨μ μž…λ‹ˆλ‹€. μ›Ή κ°œλ°œμ—λ³΄λ‹€ μ ν•©ν•œ 또 λ‹€λ₯Έ μ˜ˆλŠ” λ§ˆμŠ€ν‚Ήμž…λ‹ˆλ‹€. μš°λ¦¬λŠ” ν•  μˆ˜μžˆμ–΄!

<iframe src="https://giphy.com/embed/MpjZmG4eTvso8" width="480" height="448" frameBorder="0" class="giphy-embed" allowFullScreen></iframe>

via GIPHY

λ§ˆμŠ€ν‚Ήμ€ μ•„μ£Ό κ°„λ‹¨ν•œ λ¬Έμžμ—΄μ„ 보내고 λ‹€λ₯Έ 숫자λ₯Ό ν• λ‹Ήν•˜μ—¬ λ‹€λ₯Έ ν”Œλž˜κ·Έλ₯Ό λ‚˜νƒ€λ‚΄λŠ” λ°©λ²•μž…λ‹ˆλ‹€. 이것은 일련의 예 λ˜λŠ” μ•„λ‹ˆμ˜€ μ§ˆλ¬Έμ„ μ‹ μ†ν•˜κ²Œ μš”μ²­ν•˜λŠ” λ°©λ²•μž…λ‹ˆλ‹€. μš°λ¦¬κ°€ μ›Ή μ‚¬μ΄νŠΈλ₯Ό 가지고 있고 μ‚¬μš©μžμ—κ²Œ 4 개의 κ°„λ‹¨ν•œ ν”Œλž˜κ·Έκ°€ 있고 μ‹Άλ‹€κ³  κ°€μ • ν•΄ λ΄…μ‹œλ‹€.

Flag A = β€œIs the user authenticated?” = 1

Flag B = β€œIs the user in the correct region?” = 2

Flag C = β€œCan we get ice cream after?” = 4

Flag D = β€œIs the user a robot?” = 8

이 ν”Œλž˜κ·ΈλŠ” 4 자리 2 진 λ¬Έμžμ—΄λ‘œ 전달 될 수 μžˆμŠ΅λ‹ˆλ‹€.

0000 = DCBA

ν•΄λ‹Ή μˆ«μžμ— 1을 μž…λ ₯ν•˜μ—¬ μ›ν•˜λŠ” ν”Œλž˜κ·Έλ₯Ό 올릴 수 μžˆμŠ΅λ‹ˆλ‹€.

1000 (binary) = Flag D = 8 (integer)

0100 (binary) = Flag C = 4 (integer)

0010 (binary)= Flag B = 2 (integer)

0001 (binary)= Flag A = 1 (integer)

이것은 μš°λ¦¬κ°€ ν†΅κ³Όν•˜λŠ” λͺ¨λ“  것이 μ •μˆ˜ 일 λ•Œ λ™μ‹œμ— μ—¬λŸ¬ ν”Œλž˜κ·Έλ₯Ό λ°œμƒμ‹œν‚€λŠ” λ°©λ²•μž…λ‹ˆλ‹€.

1010 (binary) = Flag D and Flag B = 10 (integer)

0111 (binary) = Flag C, B and A = 7 (integer)

이 κΈ°λŠ₯이 μž‘λ™ν•˜λŠ”μ§€ ν™•μΈν•©μ‹œλ‹€.

https://cdn-images-1.medium.com/max/1600/1*QhPKjsxw22Hf5a3-cR96fQ.png

https://cdn-images-1.medium.com/max/1600/1*w6IRRQ8AxCLiQOLZYtNccA.png

https://cdn-images-1.medium.com/max/1600/1*cTfbvJIxJOGyvx2ysmi7Tg.png

멋지닀, νš¨κ³Όκ°€ μžˆμ—ˆλ‹€. μ™„μ „νžˆ μ˜ˆμƒν–ˆλ‹€. ν•˜ν•˜ μ•„λ‹ˆ, μ•„λ‹ˆμ§€λ§Œ, μ •μˆ˜λ₯Ό μ „λ‹¬ν•˜κ³  μ—¬λŸ¬ 개의 ν”Œλž˜κ·Έλ₯Ό 올릴 수 μžˆλ‹€λŠ” 것을 μ•Œλ©΄ μ’‹μŠ΅λ‹ˆλ‹€.

⚠️ **GitHub.com Fallback** ⚠️