Bitwise Operators in Javascript - Lee-hyuna/33-js-concepts-kr GitHub Wiki
λ²μ : 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>λΉνΈ μ°μ°μ λ 무μμ λκΉ? κ·Έκ²λ€μ λΉνΈ μμ€μμ λ³μμ μνΈ μμ©νλ λ°©λ²μ λλ€. λΉνΈλ μΌλ°μ μΌλ‘ λΆλ μμμ λ° μ μλ‘ λ³νλλ―λ‘ μ 보λ₯Ό μ½κ² μν ν μ μμ΅λλ€. μ°λ¦¬κ° μλμ ν¨μ¨μ±μ μ€μμνλ€λ©΄ λΉνΈλ₯Ό μ§μ μ²λ¦¬νκ³ κ·Έ λ³νμ floats / intλ‘ κ±΄λ λ°λ κ²μ΄ μ μ© ν κ²μ λλ€. λΉνΈλ μλ° μ€ν¬λ¦½νΈμ λ³μλ³΄λ€ λΉ λ₯΄μ§ λ§ λ²μ μμ€μ 건λ λ°λ κ²λ³΄λ€ 볡μ‘ν©λλ€.
λΉνΈ λ¨μμ λ¨μν μ«μ
1 (integer) = 0001 (binary)
2 = 0010
3 = 0011
4 = 0100
5 = 0101
6 = 0110
7 = 0111
8 = 1000
λΉνΈ μ°μ°μ (AND, OR, XOR)λ μΌλ° λ Όλ¦¬ μ°μ°μμ λΉμ·νκ² λμν©λλ€. λ¨, λΉνΈ μμ€μμλ νκ°νμ§λ§ λ Όλ¦¬λ₯Ό μ μμ μΌλ‘ ν΄μνλ λ°©μμ΄ μλλλ€. λ€μμ λΉνΈ μ°μ°μμ μΌλ° λ Όλ¦¬ μ°μ°μμ μ°¨μ΄μ μ λν μμ λλ€.
μ μμ μΈ λ Όλ¦¬ μ°μ°μλ μμͺ½ λͺ¨λκ° μ°ΈμΌ λ κ°μ₯ μ€λ₯Έμͺ½ κ°μ λ°νν©λλ€.
λΉνΈ μ°μ°μλ μΌλ° λ Όλ¦¬ μ°μ°μμ λ€λ₯Έ μμ€μμ 3κ³Ό 6μ νκ°ν©λλ€.
3 & 6μ κ²°κ³Όλ μ΄λ»κ² 2μ κ°μ μ μμ΅λκΉ? μ°λ¦¬λ 3 & 6μ λ³Έλ€. κ·Έλ¬λ μ¬μ€μ μλμ κ°λ€.
3 & 6
μ΄ λ λΉνΈμ κ³΅ν΅ λΆλͺ¨κ° λ λ²μ§Έ μ«μμ΄κΈ° λλ¬Έμ κ²°κ³Όλ 2μ λλ€.
κ³΅ν΅ μ«μλ μ€λ₯Έμͺ½μμ λ λ²μ§Έ μ«μμ΄κ³ μ΄ λΉνΈλ μ«μ 2λ₯Ό λνλ λλ€.
λΉνΈ μ°μ°μκ° μ°λ¦¬κ° μ΅μν κ²κ³Ό λ€λ₯Έ μμ€μμ μλνλ€λ κ²μ΄ νμ€ν©λλ€. λΉνΈ μ°μ°μλ₯Ό μ¬μ©νλ©΄ μ΄λ€ μ΄μ μ΄ μμ΅λκΉ? μ΄λ¬ν μμ μμν μ€μ μμ© νλ‘κ·Έλ¨μ μ°Ύλ κ²μ΄ μ μ© ν κ²μ λλ€. λΉνΈ μμ€μμμ νκ°λ μΌλ° λ Όλ¦¬ μ°μ°μλ³΄λ€ λΉ λ₯΄κΈ° λλ¬Έμ ν° μνμ λν νκ° λλ λ°λ³΅μ λΉνΈ μ°μ°μμλ³΄λ€ ν¨μ¨μ μ λλ€. μΉ κ°λ°μλ³΄λ€ μ ν©ν λ λ€λ₯Έ μλ λ§μ€νΉμ λλ€. μ°λ¦¬λ ν μμμ΄!
<iframe src="https://giphy.com/embed/MpjZmG4eTvso8" width="480" height="448" frameBorder="0" class="giphy-embed" allowFullScreen></iframe>λ§μ€νΉμ μμ£Ό κ°λ¨ν λ¬Έμμ΄μ 보λ΄κ³ λ€λ₯Έ μ«μλ₯Ό ν λΉνμ¬ λ€λ₯Έ νλκ·Έλ₯Ό λνλ΄λ λ°©λ²μ λλ€. μ΄κ²μ μΌλ ¨μ μ λλ μλμ€ μ§λ¬Έμ μ μνκ² μμ²νλ λ°©λ²μ λλ€. μ°λ¦¬κ° μΉ μ¬μ΄νΈλ₯Ό κ°μ§κ³ μκ³ μ¬μ©μμκ² 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)
μ΄ κΈ°λ₯μ΄ μλνλμ§ νμΈν©μλ€.
λ©μ§λ€, ν¨κ³Όκ° μμλ€. μμ ν μμνλ€. νν μλ, μλμ§λ§, μ μλ₯Ό μ λ¬νκ³ μ¬λ¬ κ°μ νλκ·Έλ₯Ό μ¬λ¦΄ μ μλ€λ κ²μ μλ©΄ μ’μ΅λλ€.