5. Bitwise Operators

2024. 2. 26. 23:47ㆍCS - Roadmap.sh/5. Bitwise operators

CS - 5. Bitwise Operators 

Bitwise Operators

πŸ’‘ Bitwise operators are used to perform operations on individual bits of a number. They are used in cryptography, image processing, and other applications.

 

λΉ„νŠΈ μ—°μ‚°μž
λΉ„νŠΈ μ—°μ‚°μžλŠ” μˆ«μžμ˜ κ°œλ³„ λΉ„νŠΈμ— λŒ€ν•œ μ—°μ‚°μ„ μˆ˜ν–‰ν•˜λŠ” λ° μ‚¬μš©λ©λ‹ˆλ‹€. μ•”ν˜Έν™”, μ΄λ―Έμ§€ μ²˜λ¦¬ λ° κΈ°νƒ€ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ— μ‚¬μš©λ©λ‹ˆλ‹€.

 

 

 

λΉ„νŠΈ μ—°μ‚°μžλŠ” μ»΄ν“¨ν„° ν”„λ‘œκ·Έλž˜λ°μ—μ„œ μ‚¬μš©λ˜λ©°, μ΄λŠ” λ°μ΄ν„°λ₯Ό λΉ„νŠΈ λ‹¨μœ„λ‘œ μ‘°μž‘ν•˜λŠ”λ° μ‚¬μš©λ©λ‹ˆλ‹€. λΉ„νŠΈ μ—°μ‚°μžμ˜ μ’…λ₯˜λŠ” μ•„λž˜μ™€ κ°™μŠ΅λ‹ˆλ‹€.

- AND ( & ) : λ‘ λΉ„νŠΈκ°€ λͺ¨λ‘ 1일 λ•Œλ§Œ κ²°κ³Όκ°€ 1이 λ©λ‹ˆλ‹€.
- OR ( | ) : λ‘ λΉ„νŠΈ μ€‘ ν•˜λ‚˜λΌλ„ 1이라면 κ²°κ³Όκ°€ 1이 λ©λ‹ˆλ‹€.
- XOR ( ^ ) : λ‘ λΉ„νŠΈκ°€ μ„œλ‘œ λ‹€λ₯Ό λ•Œ κ²°κ³Όκ°€ 1이 λ©λ‹ˆλ‹€.
- NOT ( ~ ) : λΉ„νŠΈ κ°’을 λ°˜μ „μ‹œν‚΅λ‹ˆλ‹€. μ¦‰, 1은 0으둜, 0은 1둜 λ°”κΏ‰λ‹ˆλ‹€.
- Left shift ( << ) : μ§€μ •ν•œ μˆ˜λ§ŒνΌ λΉ„νŠΈλ₯Ό μ™Όμͺ½μœΌλ‘œ μ΄λ™μ‹œν‚΅λ‹ˆλ‹€. μ˜€λ₯Έμͺ½μ—λŠ” 0이 μ±„μ›Œμ§‘λ‹ˆλ‹€.
- Right shift ( >> ) : μ§€μ •ν•œ μˆ˜λ§ŒνΌ λΉ„νŠΈλ₯Ό μ˜€λ₯Έμͺ½μœΌλ‘œ μ΄λ™μ‹œν‚΅λ‹ˆλ‹€. μ™Όμͺ½μ—λŠ” μ΅œμƒμœ„ λΉ„νŠΈκ°€ μ±„μ›Œμ§‘λ‹ˆλ‹€.

μ΄λŸ¬ν•œ λΉ„νŠΈ μ—°μ‚°μžλŠ” λΉ λ₯Έ κ³„μ‚°μ΄λ‚˜ λ©”λͺ¨λ¦¬ μ΅œμ ν™”, ν”Œλž˜κ·Έ μ„€μ • λ“± λ‹€μ–‘ν•œ μš©λ„λ‘œ μ‚¬μš©λ©λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ μ‚¬μš©ν•  λ•Œ μ£Όμ˜ν•΄μ•Ό ν•  μ μ€, λΉ„νŠΈ μ—°μ‚°μžλŠ” μ •μˆ˜ν˜• λ°μ΄ν„°μ—λ§Œ μ μš©ν•  μˆ˜ μžˆλ‹€λŠ” κ²ƒμž…λ‹ˆλ‹€. λ˜ν•œ, λΉ„νŠΈ μ—°μ‚°μ˜ κ²°κ³ΌλŠ” μ—°μ‚°μ„ μˆ˜ν–‰ν•œ λ°μ΄ν„° νƒ€μž…에 λ”°λΌ λ‹€λ₯Ό μˆ˜ μžˆμŠ΅λ‹ˆλ‹€.

λ§ˆμ§€λ§‰μœΌλ‘œ, λΉ„νŠΈ μ—°μ‚°μžμ˜ μ‚¬μš©μ€ ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄μ— λ”°λΌ μ•½κ°„μ”© λ‹€λ₯Ό μˆ˜ μžˆμœΌλ―€λ‘œ, μ‚¬μš©ν•˜λŠ” μ–Έμ–΄μ˜ λ¬Έμ„œλ‚˜ μ°Έκ³  μžλ£Œλ₯Ό ν™•μΈν•˜λŠ” κ²ƒμ΄ μ’‹μŠ΅λ‹ˆλ‹€. μ΄μ™Έμ—λ„ λ” κΆκΈˆν•œ μ μ΄ μžˆμœΌμ‹œλ‹€λ©΄ μ–Έμ œλ“ μ§€ μ§ˆλ¬Έν•΄μ£Όμ„Έμš”.

 

 

 

# AND μ—°μ‚°
print(5 & 3)  # 좜λ ₯: 1

# OR μ—°μ‚°
print(5 | 3)  # 좜λ ₯: 7

# XOR μ—°μ‚°
print(5 ^ 3)  # 좜λ ₯: 6

# NOT μ—°μ‚°
print(~5)  # 좜λ ₯: -6

 

 AND μ—°μ‚°
print(5 & 3) # μΆœλ ₯: 7

5λ₯Ό 2μ§„μˆ˜λ‘œ ν‘œν˜„ν•˜λ©΄ 101, 3을 2μ§„μˆ˜λ‘œ ν‘œν˜„ν•˜λ©΄ 011 μž…λ‹ˆλ‹€.
두 μˆ˜λ₯Ό AND μ—°μ‚°ν•˜λ©΄ 001μ΄λ―€λ‘œ, 10μ§„μˆ˜λ‘œλŠ” 1μž…λ‹ˆλ‹€.

 


 OR μ—°μ‚°
print(5 | 3)  # μΆœλ ₯: 7

OR μ—°μ‚°λ„ λ§ˆμ°¬κ°€μ§€μž…λ‹ˆλ‹€.
5λ₯Ό 2μ§„μˆ˜λ‘œ ν‘œν˜„ν•˜λ©΄ 101, 3을 2μ§„μˆ˜λ‘œ ν‘œν˜„ν•˜λ©΄ 011 μž…λ‹ˆλ‹€.
두 μˆ˜λ₯Ό OR μ—°μ‚°ν•˜λ©΄ 111μ΄λ―€λ‘œ, 10μ§„μˆ˜λ‘œλŠ” 7μž…λ‹ˆλ‹€.


 XOR μ—°μ‚°
print(5 ^ 3)  # μΆœλ ₯: 6

5λ₯Ό 2μ§„μˆ˜λ‘œ ν‘œν˜„ν•˜λ©΄ 101, 3을 2μ§„μˆ˜λ‘œ ν‘œν˜„ν•˜λ©΄ 011 μž…λ‹ˆλ‹€.
두 μˆ˜λ₯Ό XOR μ—°μ‚°ν•˜λ©΄ 110μ΄λ―€λ‘œ, 10μ§„μˆ˜λ‘œλŠ” 6μž…λ‹ˆλ‹€.

 


 NOT μ—°μ‚°
print(~5)  # μΆœλ ₯: -6

5λ₯Ό 2μ§„μˆ˜λ‘œ ν‘œν˜„ν•˜λ©΄ 101 μž…λ‹ˆλ‹€.
이 μˆ˜λ₯Ό NOT μ—°μ‚°ν•˜λ©΄ 010이 λ˜λŠ”데, νŒŒμ΄μ¬μ—μ„œλŠ” λ³΄μˆ˜λ₯Ό μ·¨ν•œ ν›„ -1을 λ”ν•œ κ°’을 λ°˜ν™˜ν•˜λ―€λ‘œ 10μ§„μˆ˜λ‘œλŠ” -6μž…λ‹ˆλ‹€.

 

 

# Left shift μ—°μ‚°
print(5 << 2)  # 좜λ ₯: 20


# Right shift μ—°μ‚°
print(5 >> 1)  # 좜λ ₯: 2

 

 

 Left shift μ—°μ‚°
print(5 << 2)  # μΆœλ ₯: 20


5λ₯Ό 2μ§„μˆ˜λ‘œ ν‘œν˜„ν•˜λ©΄ 101 μž…λ‹ˆλ‹€.
이 μˆ˜λ₯Ό 2만큼 μ™Όμͺ½μœΌλ‘œ shiftν•˜λ©΄ 10100μ΄λ―€λ‘œ, 10μ§„μˆ˜λ‘œλŠ” 20μž…λ‹ˆλ‹€.

 


 Right shift μ—°μ‚°
print(5 >> 1)  # μΆœλ ₯: 2


5λ₯Ό 2μ§„μˆ˜λ‘œ ν‘œν˜„ν•˜λ©΄ 101 μž…λ‹ˆλ‹€.
이 μˆ˜λ₯Ό 1만큼 μ˜€λ₯Έμͺ½μœΌλ‘œ shiftν•˜λ©΄ 10μ΄λ―€λ‘œ, 10μ§„μˆ˜λ‘œλŠ” 2μž…λ‹ˆλ‹€.

 

 

728x90