๊ด€๋ฆฌ ๋ฉ”๋‰ด

IT’s Portfolio

[Python] ๋น„ํŠธ ์—ฐ์‚ฐ์ž ๋ณธ๋ฌธ

Development Study/Python

[Python] ๋น„ํŠธ ์—ฐ์‚ฐ์ž

f1r3_r41n 2022. 10. 1. 18:32
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)
        =========
  • |: OR => ๋‘˜ ์ค‘ ํ•˜๋‚˜๋งŒ ์ฐธ์ผ ๊ฒฝ์šฐ 1
    • a|b
      • result
      • =========
        69|15
        79(10)
        0b1001111(2)
        =========
  • ^: XOR => ๋‘˜ ์ค‘ ํ•˜๋‚˜๋งŒ ์ฐธ์ด์–ด๋„ 1
    • a^b
      • result
      • =========
        69^15
        74(10)
        0b1001010(2)
        =========
  • <<: ์™ผ์ชฝ ์‰ฌํ”„ํŠธ ์—ฐ์‚ฐ
    • b<<2
      • result
      • =========
        b<<2
        60(10)
        0b111100(2)
        =========
  • >>: ์˜ค๋ฅธ์ชฝ ์‰ฌํ”„ํŠธ ์—ฐ์‚ฐ
    • a>>3
      • result
      • =========
        a>>3
        8(10)
        0b1000(2)
        =========

๋น„ํŠธ ๋ฐ˜์ „ ์—ฐ์‚ฐ์ž(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
    • 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
        • ์ปดํ“จํ„ฐ์˜ ๋ณด์ˆ˜ ์‚ฌ์šฉ ์ด์œ ?
      • ์Œ์ˆ˜ ์‚ฌ์šฉ ์œ„ํ•ด์„œ
        • ์ปดํ“จํ„ฐ์˜ ์Œ์ˆ˜ ํ‘œํ˜„ ์ด์œ ?
      • ์ปดํ“จํ„ฐ๋Š” ๋บ„์…ˆ์„ ํ•˜์ง€ ๋ชปํ•จ. ์–‘์ˆ˜๋ฅผ 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)
      • 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
๋ฐ˜์‘ํ˜•
Comments