์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- java
- ์๋ฐ ๊ธฐ์ด
- ํ์ด์ฌ ์๊ณ ๋ฆฌ์ฆ
- ํ์ด์ฌ ์ฑ๋ฆฐ์ง
- Reversing
- ๋ฐฑ์ค
- Database
- ๋ฌ์คํธ
- ์๋ฐ
- Rust
- ์ค๋ผํดDB
- Operating System
- ๋ฐ์ดํฐ ํต์
- ํ์ด์ฌ
- ์๊ณ ๋ฆฌ์ฆ
- OS
- ๋ฐ์ดํฐ๋ฒ ์ด์ค
- ๋ฐฑ์ค ๋ฌ์คํธ
- ์๋ฐ ๊ฐ๋
- data communication
- Python
- ํ์ด์ฌ ์ฒผ๋ฆฐ์ง
- ๋ฌ์คํธ ์์
- ubuntu
- Python challenge
- ์ด์์ฒด์
- ์ฐ๋ถํฌ
- ์ค๋ผํด
- ๋ฌ์คํธ ํ๋ก๊ทธ๋๋ฐ ๊ณต์ ๊ฐ์ด๋
- C
Archives
- Today
- Total
IT’s Portfolio
[Python] ๋นํธ ์ฐ์ฐ์ ๋ณธ๋ฌธ
728x90
๋ฐ์ํ
๐ป ๋นํธ ์ฐ์ฐ์
- ๋ค์ด๊ฐ๊ธฐ ์
False == 0
True == 1
a=69, b=15
&
: AND => ๋ ๋ค ์ฐธ์ผ ๊ฒฝ์ฐ 1- a&b
a = 69 b = 15 print("=========") print(f"69&15\n{69&15}(10)") print(f"{bin(69&15)}(2)") print("=========")
- result
========= 69&15 5(10) 0b101(2) =========
- a&b
|
: OR => ๋ ์ค ํ๋๋ง ์ฐธ์ผ ๊ฒฝ์ฐ 1- a|b
- result
========= 69|15 79(10) 0b1001111(2) =========
- a|b
^
: XOR => ๋ ์ค ํ๋๋ง ์ฐธ์ด์ด๋ 1- a^b
- result
========= 69^15 74(10) 0b1001010(2) =========
- a^b
<<
: ์ผ์ชฝ ์ฌํํธ ์ฐ์ฐ- b<<2
- result
========= b<<2 60(10) 0b111100(2) =========
- b<<2
>>
: ์ค๋ฅธ์ชฝ ์ฌํํธ ์ฐ์ฐ- a>>3
- result
========= a>>3 8(10) 0b1000(2) =========
- a>>3
๋นํธ ๋ฐ์ ์ฐ์ฐ์(bitwise NOT operator)
๋ฅผ ์์๋ณด๊ธฐ ์ ์ ์์๋ณด๋ ๋ณด์
๋ณด์๋?
- ๋ณด์ถฉํ๋ ์๋ฅผ ์๋ฏธ
- 10์ง์์๋ 10์ ๋ณด์์ 9์ ๋ณด์ ์ฌ์ฉ
- 10์ ๋ณด์: ์ซ์์ ํฉ์ 10์ ์ ๊ณฑ์ ๋ก ๋ง๋ค์ด์ฃผ๊ธฐ ์ํด ๋ํด์ค์ผ ํ๋ ์
- 10์ ๋ณด์๋ 9์ ๋ณด์๋ฅผ ์ทจํ ํ +1์ ํ๋ฉด ๊ตฌํ ์ ์์
- 9์ ๋ณด์: ์ซ์์ ํฉ์ 10์ ์ ๊ณฑ์ - 1 ๋ก ๋ง๋ค์ด์ฃผ๊ธฐ ์ํด ๋ํด์ค์ผ ํ๋ ์
- 9์ ๋ณด์๋ ๊ฐ ์๋ฆฌ์์ ๊ฐ์ 9์์ ๋นผ์ฃผ๋ฉด ๊ตฌํ ์ ์์
- Example
- 4(10)์ 9์ ๋ณด์ => 5
- 9 - 4 = 5 => ๊ฐ ์๋ฆฌ์์ ๊ฐ์ 9์์ ๋นผ์ค
- 4(10)์ 10์ ๋ณด์ => 6
- 9 - 4 + 1 = 6 => 9์ ๋ณด์์์ +1
- 21(10)์ 9์ ๋ณด์ => 78
- 99 - 21 = 78
- 21(10)์ 10์ ๋ณด์ => 79
- 99 - 21 + 1 = 79
- 4(10)์ 9์ ๋ณด์ => 5
- 10์ ๋ณด์: ์ซ์์ ํฉ์ 10์ ์ ๊ณฑ์ ๋ก ๋ง๋ค์ด์ฃผ๊ธฐ ์ํด ๋ํด์ค์ผ ํ๋ ์
- 2์ง์์์๋ 2์ ๋ณด์์ 1์ ๋ณด์ ์ฌ์ฉ
- 2์ ๋ณด์: ์ซ์์ ํฉ์ 2์ ์ ๊ณฑ์ ๋ก ๋ง๋ค์ด์ฃผ๊ธฐ ์ํด ๋ํด์ค์ผ ํ๋ ์
- 1์ ๋ณด์: ์ซ์์ ํฉ์ 2์ ์ ๊ณฑ์ - 1 ๋ก ๋ง๋ค์ด์ฃผ๊ธฐ ์ํด ๋ํด์ค์ผ ํ๋ ์
- 1์ ๋ณด์๋ ๊ฐ ์๋ฆฟ์๋ฅผ 1์์ ๋นผ๋ฉด ๊ตฌํ ์ ์๋๋ฐ ์ด๋ ๋นํธ ๋ฐ์ ๊ณผ ๋์ผ
- Example
- 1001(2)์ 1์ ๋ณด์ => 0110
- 1111 - 1001 = 0110 => ๊ฐ ์๋ฆฟ์์ ๊ฐ์ 1์์ ๋นผ์ค. ๋นํธ ๋ฐ์
- 1001(2)์ 2์ ๋ณด์ => 0111
- 1111 - 1001 + 1 = 0111 => 1์ ๋ณด์์์ +1
- ์ปดํจํฐ์ ๋ณด์ ์ฌ์ฉ ์ด์ ?
- 1001(2)์ 1์ ๋ณด์ => 0110
- ์์ ์ฌ์ฉ ์ํด์
- ์ปดํจํฐ์ ์์ ํํ ์ด์ ?
- ์ปดํจํฐ๋ ๋บ์
์ ํ์ง ๋ชปํจ. ์์๋ฅผ 2์ ๋ณด์๋ก ๋ณํํ ๋ค ๋ง์
์ ํ๋ ํ์์ผ๋ก ์ฐ์ฐํด์ผ ํจ
- Example => 8 - 3
- 10์ง์์ธ 8์ 3๋ฅผ 2์ง์๋ก ๋ณํ
- 1000(2) - 0011(2)
- 0011(2)์ 2์ ๋ณด์ => 1100(2)
- 1000(2) + 1100(2)
- 10101(2) => ์ฐ๋ฆฌ๋ 4๋นํธ ์๋ฃํ์ ์ฌ์ฉํ๋ฏ๋ก ๋งจ ๋ ๋นํธ๋ ๋ฌด์ํจ
- 0101(2) => 5(10)
- 10101(2) => ์ฐ๋ฆฌ๋ 4๋นํธ ์๋ฃํ์ ์ฌ์ฉํ๋ฏ๋ก ๋งจ ๋ ๋นํธ๋ ๋ฌด์ํจ
- Result
- 8 - 3 = 5
0์ 1๋ก 1์ 0์ผ๋ก ๋ฐ๊พธ๋ ์ฐ์ฐ์
"๋นํธ๋ฅผ ๋ค์ง๋๋ค.", "๋นํธ ๋ฐ์ " ์ด๋ผ๊ณ ๋ถ๋ฆฌ์
-x
: x์ ๋ํ ๋ถํธ๋ฅผ ๋ฐ๊ฟ. x์ ๊ฐ์ด 0์ธ ๊ฒฝ์ฐ ๋ณํ์ง ์์
~x
: x์ ๋ชจ๋ ๋นํธ๋ฅผ ๋ค์ง์.
- x์ 2์ง์ ํํ์ด 0000 0110์ด๋ฉด ~x๋ 1111 1001์ด ๋จ
Example => 7
- 7(10) => 0111(2)
- ~7(10) => 1000(2)
print(~7)
- Result
-8
- ํ์ด์ฌ์์ ~7์ ์ถ๋ ฅํ๋ฉด 1000(2)๊ฐ ์๋ -8์ ์ถ๋ ฅํจ
- 1000(2)์ ์ปดํจํฐ๊ฐ ์ธ์ํ๋ ~7. ์ปดํจํฐ๊ฐ ์ฐ์ฐ์ ํ๊ธฐ ์ํด 2์ ๋ณด์๋ก ์์๋ฅผ ์ ์ฅํ ๊ฒ
์์๋ฅผ ์ ์ฅํ๊ธฐ ์ดํด 2์ ๋ณด์๋ฅผ ์ทจํ์ผ๋ฏ๋ก ์์๋ฅผ ํด์ํ๊ธฐ ์ํด์๋ 2์ ๋ณด์๋ฅผ ์ญ์ผ๋ก ์ทจํด์ฃผ์ด์ผ ํจ. 1์ ๋ณด์๋ฅผ ์ทจํ๊ณ +1์ ํ์ผ๋ฏ๋ก -1์ ํ ํ 1์ ๋ณด์๋ฅผ ์ทจํด์ฃผ์ด์ผ ํจ
- ~7 => 1000(2): 2์ ๋ณด์๋ฅผ ์ทจํ๊ณ ์ ์ฅ๋ ์์
- Most Significant Bit(์ต์์ ๋นํธ): 0์ด๋ฉด ์์, 1์ด๋ฉด ์์
- 1000(2) - 1 = 0111(2)
- 0111(2)์ 1์ ๋ณด์ => 1000(2) => -0b1000 => -8
- ์ฆ,
~x = -(x+1)
๊ฒฐ๋ก
~x๋ -(x+1)๊ณผ ๊ฐ์
728x90
๋ฐ์ํ
'Development Study > Python' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Algorithm] Baekjoon - ๋ฐ๋ณต๋ฌธ ๋จ๊ณ (0) | 2022.10.12 |
---|---|
[Python] ํ์ด์ฌ์ ๋ฌธ์์ด ํฌ๋ฉํ Ver.2 (0) | 2022.10.06 |
[Python] eval(), exec()์ ๋ํด์ (0) | 2022.08.16 |
[Algorithm] Baekjoon - ์กฐ๊ฑด๋ฌธ ๋จ๊ณ (0) | 2022.08.05 |
[Python] ํ์ด์ฌ์์ '_, *, **' ์๋ฏธ (0) | 2022.08.05 |
Comments