728x90
λΉνΈμ°μ°
- μ μν λ³μλ₯Ό 10μ§λ²μΌλ‘ μ°μ°νλ λμ 2μ§λ²μΌλ‘ κ³μ°νλ€.
- μ€λ¬΄μμ λΉνΈμ°μ°μ κ±°μ κ³μ°μ μ¬μ© νμ§ μμΌλ©° μ μνμ κ°μ λΉνΈλ¨μλ‘ λλμ΄ λ°μ΄ν°λ₯Ό μ’ λ μμ λ¨μλ‘ λ΄μ κ²½μ μ±μ λμ΄κΈ° μν μ©λλ‘ μ¬μ©λλ€.
- μμ
- 32λΉνΈμ 2μ§μ μ μν λ³μ μμ 0λλ 1μ΄ 32κ° λ΄κΈΈ μ μλ λ³μκ° μλ€.
- 32κ°μ κ°μ νλμ μ λ³΄λ§ λνλλ° μ°μ§μκ³ , μμ 5λΉνΈμ λ€μ 27λΉνΈμ μλ‘ λ€λ₯Έ μ 보λ₯Ό λ΄λ κ°μ λ£μ μ μλ€.
- μ΄λ κ² λ³μ νλμ μ¬λ¬κ°μ κ°μ λ΄μ μ¬μ©ν μ μλ€.
- λΉνΈμ°μ°μ μ¬μ©νλ λΆνλ 무μν μ μμΌλ―λ‘ μ£Όλ‘ νλκ·Έ κ°(μ¬λ¬κ°μ μνκ°μ 0κ³Ό 1λ‘ λ΄λ λ°©λ²)μ μ²λ¦¬νκ±°λ λ€νΈμν¬μμ νλ‘ν μ½μ λ°μ΄ν° μμ μ€μ΄κΈ° μν΄ μμ£Ό μ¬μ©λλ€.
- 2μ§μ μ μν λ³μλ μ’μΈ‘μΌλ‘ κ°μλ‘ μμλΉνΈ, μ°μΈ‘μΌλ‘ κ°μλ‘ νμλΉνΈμ΄λ€.
- μ½νλ¦°μ λͺ¨λ μ μνμ΄ λΆνΈλ₯Ό ν¬ν¨νλ―λ‘ μ΅μμ λΉνΈλ κ°μ΄ -μΈμ§ +μΈμ§ λΆνΈλΉνΈλ‘ μ¬μ©νλ€.
- 0μ΄λ©΄ μμ, 1μ΄λ©΄ μμμΈ λΆνΈλΉνΈλ‘ μ¬μ©νλ€.
- λΆνΈλΉνΈλ λ°μ΄ν°λ₯Ό λ΄μ§ μλκ²μ΄ μ’λ€.
bitwise shift operators
- λΉνΈμ μ΅μλ¨ λλ μ΅νλ¨μ 0μ λ£μ΄ λΉνΈλ₯Ό λ°μ΄μ£Όλ μ°μ°μμ΄λ€.
- shl(shift left)
- λΆνΈλΉνΈλ₯Ό μ μΈν λͺ¨λ λΉνΈλ₯Ό μ’μΈ‘μΌλ‘ μνλ λ§νΌ λ°μ΄μ€λ€.
- shr(shift right)
- λΆνΈλΉνΈλ₯Ό μ μΈν λͺ¨λ λΉνΈλ₯Ό μ°μΈ‘μΌλ‘ μνλ λ§νΌ λ°μ΄μ€λ€.
- ushr(unsigned shift right)
- λΆνΈλΉνΈλ₯Ό ν¬ν¨νμ¬ λͺ¨λ λΉνΈλ₯Ό μ°μΈ‘μΌλ‘ λ°μ΄μ€λ€.
bitwise operators
- λΉνΈλ₯Ό μ‘°μνλ€.
- and
- μλ³Έκ³Ό λΉκ΅λμμ 2μ§μλ₯Ό λΉνΈλ¨μλ‘ λΉκ΅νμ¬ λΉνΈκ° λλ€ 1μΈ μλ¦¬λ§ 1λ‘ λ°ννλ€.
- 1010 and 0110 μ κ²°κ³Όκ°μ 0010 μ΄λ€.
- μλ³Έκ³Ό λΉκ΅νκ±°λ μλ³Έμ λΉνΈλ₯Ό 0μΌλ‘ λ§λ€κ³ μΆμλ μ¬μ©νλ€.
- or
- μλ³Έκ³Ό λΉκ΅λμμ 2μ§μλ₯Ό λΉνΈλ¨μλ‘ λΉκ΅νμ¬ λΉνΈκ° νλλΌλ 1μΈμ리λ₯Ό 1λ‘ λ°ννλ€.
- 1010 or 0110 μ κ²°κ³Όκ°μ 1110 μ΄λ€.
- λΉνΈκ°μ 1λ‘ μ€μ νκ³ μΆμλ μ¬μ©νλ€.
- xor
- μλ³Έκ³Ό λΉκ΅λμμ 2μ§μλ₯Ό λΉνΈλ¨μλ‘ λΉκ΅νμ¬ λΉνΈκ° κ°μ μ리λ 0, λ€λ₯Έ μ리λ 1λ‘ λ°ννλ€.
- 1010 xor 0110 μ κ²°κ³Όκ°μ 1100 μ΄λ€.
- λΉκ΅ν λ κ°μ΄ λΉνΈλ³λ‘ κ°μμ§ νμΈν λ μ¬μ©νλ€.
Inv()
- λΉνΈλ₯Ό λͺ¨λ λ°μ μν¨λ€.
- 0μ 1λ‘, 1μ 0μΌλ‘ λ°μ μν¨λ€.
μμ
fun main(){
var bitData: Int = 0b10000
// νμ μΈλ²μ§Έ λΉνΈμ 1μ set νκΈ°
bitData = bitData or(1 shl 2) // 1μ΄λΌλ κ°μ shlμ μ¬μ©νμ¬ λΉνΈλ₯Ό μ’μΈ‘μΌλ‘ 2λ² λ°κ³ bitDataμ or μ°μ°μ²λ¦¬νλ€.
println(bitData.toString(2)) // 2μ§μ ννμ λ¬Έμμ΄λ‘ λ³κ²½νμ¬ μΆλ ₯
// andμ°μ°μ ν΅ν΄ νμ λ€μ―λ²μ§Έ λΉνΈμ μλ κ°μ κΊΌλ΄ μ¬μ©νκΈ°
var result = bitData and(1 shl 4) // 1μ΄λΌλ κ°μ shlμ μ¬μ©νμ¬ μ’μΈ‘μΌλ‘ 4λ² λ°κ³ μ΄ κ°μ and μ°μ° μ²λ¦¬νλ€.
println(result. toString(2)) // 5λ²μ§Έ λΉνΈμ κ°μ μ μΈν λλ¨Έμ§λ 0μ΄ λλ€.
println(result shr 4) // μ°μΈ‘μΌλ‘ 4λ² λ°μ΄μ£Όλ©΄ μλμ κ°μ 볡μν μ μλ€.
// νμ λ€μ―λ²μ§Έ λΉνΈμ μλ 1μ clear νκΈ°
bitData = bitData and((1 shl 4).inv()) // 1μ΄λΌλ κ°μ shlμ μ¬μ©νμ¬ μ’μΈ‘μΌλ‘ 4λ² λ°κ³ inv()λ₯Ό μ΄μ©νμ¬ λ°μ μν¨λ€.
println(result. toString(2)) // 0μΌλ‘ λ°μ λ νμ λ€μ―λ²μ§Έ λΉνΈλ§ clearλλ€.
// νμ¬ bitDataκ° 10100κ³Ό κ°μμ§ λΉνΈλ³λ‘ νμΈνκΈ°
println((bitData xor(0b10100)).toString(2)) // νμ λ€μ―λ²μ§Έ λΉνΈλ§ λ€λ₯΄κΈ° λλ¬Έμ 10000μ΄ μΆλ ₯ λ κ²μ΄λ€.
}
10100
10000
1
10000
10000
π‘λΉνΈ μ°μ°μ μμ£Ό μ νμ μΈ κ²½μ°μλ§ μ¬μ©λλ€.
728x90
'μλλ‘μ΄λπ€' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[μλλ‘μ΄λ] Linear Layout & μ¬μ§ μ½μ (0) | 2024.07.10 |
---|---|
[μ½νλ¦°] μ½λ£¨ν΄ (0) | 2024.07.09 |
[μ½νλ¦°] μμ, λ¦μ μ΄κΈ°ν, μ΄κΈ°ν μ§μ° (0) | 2024.07.08 |
[μ½νλ¦°] 컬λ μ ν¨μ (0) | 2024.07.08 |
[μ½νλ¦°] Set & Map (0) | 2024.07.08 |