μΌλ¨ λ¨Όμ , indexOf λ©μλλ₯Ό νμ©νμ¬ μ§λ¦¬κ°μ λ°ννλ κ²μ β~β μ νμ©νκ²μ΄λ€. μλ₯Ό λ€μ΄,
const arr = [1,2,3,4,5];
if(!~arr.indexOf(6)){ // '~' λ‘ μΈνμ¬, ~arr.indexOf(6) μ -1μ΄ μλ,0μ΄ λ©λλ€.(false) μ¬κΈ°μ !λ₯Ό λΆμ¬, true κ° λλ κ² μ
λλ€.
return console.log("μ‘΄μ¬νμ§ μμ΅λλ€.");
}
λ₯Ό νμ©νμ¬, μ§λ¦¬κ°μΌλ‘ λ³ν νμ¬ μ‘°κ±΄λ¬Έμ νμ©νλ κ²μ΄λ€.
μ¬κΈ°μ -1 μ κ°μ 보μ(~) λ₯Ό μ·¨νλ©΄, 0μ΄ λμ€λ κ²μ μμμλλ°, μ΄λ 보μλ 무μμΈμ§ κΆκΈνμ¬ μ΄ λν μ°Ύμ 보μλ€.
~
λ λΉνΈλ¨μμ NOT μ°μ°μκΈ° λλ¬Έμ, -1
μ λΉνΈλ‘ λ³ν ν λμλ 2μ 보μ
λ₯Ό μ·¨ν΄μ 1111
μ΄ λκΈ° λλ¬Έμ μ΄κ±°μ NOT μ°μ°μ μ·¨ν΄μ£ΌλκΉ 0000
μ΄ λμ 0
μ΄ λλ€. κ²°κ΅ 0
μ΄ falsy
κ° μ΄λκΉ !
μ λΆμ΄λ©΄ true
κ° λλ€.
μ»΄ν¨ν°λ 1 κ³Ό 0μΌλ‘ μ΄λ£¨μ΄μ§ 2μ§μλ‘ μ΄λ£¨μ΄μ Έ μλ€. μ΄λ¬ν 2μ§μμ ννμ μμλ₯Ό ννν μ μλ λ¨μ μ΄μλ€.
κ·Έλμ κ°μ₯ μ΅μμ λΉνΈ(MSB) μ 1μ μ£Όμ΄, μμλ‘ ννμ νλ€. μ΄λ¬νκ² κ·Έμ μ΅μμ λ¨μ μμλ₯Ό μ£Όμ΄ μ°μ°μ νλκ²μ μ¬λλ€μ΄ νκΈ°μλ μ¬μ보μ΄μ§λ§, μ»΄ν¨ν°λ‘ μ°μ°μ μμ© ν λμλ μ λκ°κ³Ό μ°μ°νλ λ κ°μ λΉκ΅νλ μμ©λ κ±°μ³μΌνκΈ° λλ¬Έμ λ§μ κ³Όμ μ κ±°μ³μΌνλ€. μ΄λ₯Ό 보μνκΈ° μμ λμ¨κ²μ΄ λ°λ‘ 2μ 보μ
μ΄λ€.
보μλ₯Ό λ¨Όμ μ€λͺ
νμλ©΄, 보μλ λ°λ‘ 보좩νλ μ μ΄λ€.
μ΄λ¬ν 보좩νλ μ(1μ 보μ)μ μμμ -1 μ νκ²μ΄ λ°λ‘ 2μ 보μ μ΄λ€. 1μ 보μμλ 0(0000)κ³Ό -0(1111)μ΄ μ‘΄μ¬νκΈ° λλ¬Έμ μ΄λ₯Ό 보μνκ³ μ λ§λ κ²μ΄ 1μ 보μμ€ μμμμ -1μ ν κ°μ μ§μ΄λ£μ κ² μ΄λΌκ³ μκ°νλ©΄ λλ€.
μλ₯Ό λ€μ΄ μ€λͺ μ νκ² λ€.
π 20 μ μ΄μ§μ = 0001 0100 20 μ μ΄μ§μλ₯Ό λΉνΈ λ°μ νΉμ -20 (1μ 보μ) β 1110 1011 μ¬κΈ°μ μ°λ¦¬λ 2μ 보μλ₯Ό ν΄μ£Όμμλλ, 1μ 보μκ° μμμΌ κ²½μ°μμ -1 μ ν΄μ£ΌμμΌλ, λ€μ +1μ ν΄μ€λ€. β 1(MSB) 1110 1100μ€λͺ μ ν κ²μ λ³΄κ³ μμΌλ©΄ μ΄μ§λ½μ§λ§, κ°λ¨νκ² κ²°κ³ΌλΆν° λ§νκ³ μνλ€. 2μ 보μλ₯Ό ꡬν κ²½μ°, 10μ§μμ μλ₯Ό λΉνΈ λ°μ μ νκ²μ +1 μ νλ©΄ λμ΄λ€.
μ΄μ λ νλ² μ΄κ²μ μ°μ°μ λμ νμ¬ λ³΄μ.
π -20 = 1(MSB) 1110 1100 +21 = 0001 0101 βββββββββββ 1(μΊλ¦¬) 0(MSB)0000 0001 β MSB κ° 0μ΄κΈ° λλ¬Έμ μμμ΄λ©°, κ·Έ λ€μ 8κ°μ λΉνΈλ₯Ό κ³μ°νλ©΄ 1 μ΄λμ¨λ€. μ΄λ₯Ό ν΅ν΄, μ°μ°λ κ°μ +1 μ΄λΌλ κ²μ μ μ μλ€.μ½κ² λμΉ μ μλ λΆλΆμ μ‘°κΈ λ μμΈν μμλ³΄κ³ μμλκ°λ κ²μ μμ΄, μ¬λ―Έλ₯Ό λλΌλ λ§νΌ μμΌλ‘λ μ²μ²ν μ‘°κΈμ© λμκ°μΌ νλ€.