본문 바로가기
Programmable Logic Controller

PLC 정수와 2의 보수 표현 Integer (음수는 2' Complement표현)

by plc 2025. 4. 12.
반응형

PLC 정수와 2의 보수 표현 Integer (음수는 2' Complement표현)

정수형 데이터의 음수 표현은 어떻게 처리될까요? 프로그래밍의 기초지만, 막상 개념을 확실히 정리하려니 헷갈릴 수 있어요. 특히 2의 보수(2's Complement)를 이해하면 부호와 비트의 세계가 한층 선명하게 다가옵니다! 그 원리와 실전 적용까지, 완벽하게 정리해드립니다 😊

반응형

 

📚 목차

  1. 정수형 데이터의 이진 표현 필요성
  2. 음수 표현 방식의 진화
  3. 2의 보수 원리와 계산법
  4. 2의 보수 예제 풀이
  5. 2의 보수의 장점과 한계
  6. 프로그래밍에서의 적용 사례
  7. 정리 및 실전 팁

 

정수형 데이터의 이진 표현 필요성

컴퓨터는 모든 데이터를 0과 1로 인식합니다. 우리가 10진수로 생각하는 정수도 내부적으로는 이진수로 저장되죠. 그런데 정수에는 양수와 음수가 있으니, 이진수로 음수를 표현할 방법이 필요해요. 그래서 나온 것이 부호 비트(Sign Bit), 그리고 2의 보수라는 방법입니다.

 

음수 표현 방식의 진화

초기에는 단순히 맨 앞 비트를 부호로 쓰는 부호와 크기(Sign-and-Magnitude) 방식이 사용되었어요. 하지만 이 방식은 연산이 복잡하고, +0과 -0이 공존하는 문제도 있었죠. 그래서 나온 것이 1의 보수 방식이지만, 여전히 +0과 -0이 존재했어요. 이를 완벽하게 해결한 게 바로 2의 보수(2’s Complement) 방식입니다.

 

2의 보수 원리와 계산법

2의 보수를 구하는 방법은 정말 간단해요!
1️⃣ 먼저 해당 수의 이진수 표현을 구하고
2️⃣ 비트를 반전시킨 다음
3️⃣ 1을 더하면 됩니다!

예를 들어 -5를 8비트로 표현하고 싶다면:

  1. 5 → 00000101
  2. 반전 → 11111010
  3. +1 → 11111011

이렇게 해서 11111011이 바로 -5의 2의 보수 표현이 되는 거예요!

 

2의 보수 예제 풀이

실제로 몇 개만 풀어보면 감이 팍 옵니다!

  • -1 → 11111111 (8비트 기준)
  • -128 → 10000000
  • -15 → 11110001

그리고 이진수 덧셈이 정말 쉬워져요. 예를 들어:
00000101 (5)

  • 11111011 (-5)
    = 00000000 🎉

0이 딱 떨어지죠? 이게 바로 2의 보수의 강력한 장점입니다!

 

2의 보수의 장점과 한계

2의 보수가 사랑받는 이유는 확실합니다!
✅ 덧셈기 하나만으로 뺄셈까지 구현 가능
✅ 0이 하나뿐이라서 혼동이 없습니다
✅ 연산의 효율이 극대화돼요

하지만 주의할 점도 있어요:
🚫 표현할 수 있는 범위가 줄어들어요. 예를 들어 8비트로는 -128부터 +127까지만 표현 가능
🚫 사람이 직접 읽고 해석하기는 좀 어려워요 😅

 

프로그래밍에서의 적용 사례

우리가 자주 쓰는 C, Java 같은 언어에서는 기본적으로 정수를 2의 보수 방식으로 처리해요. 예를 들어, C언어에서 int a = -1;로 선언하면 내부적으로는 0xFFFFFFFF가 저장돼요. 비트 연산을 쓸 때 특히 유의해야 하고, ~, &, |, ^ 등의 연산을 정확히 이해해야 해요.

 

정리 및 실전 팁

결국 핵심은 하나예요. 2의 보수는 컴퓨터가 음수를 표현하는 가장 효율적인 방식이라는 것! 실전에서는 아래처럼 정리해보세요.

💡 외우기 팁

  • 양수를 2진수로 → 반전 → +1 = 음수
  • 2의 보수로 표현하면 덧셈과 뺄셈이 하나로 통합됨
  • 표현 범위를 넘지 않게 조심!

프로그래밍 연습을 많이 해보면서 직접 해석해보는 게 제일 빠릅니다!

 

❓ FAQ

Q1. 왜 2의 보수를 사용할까요?

덧셈기 하나만으로 뺄셈까지 구현 가능하고, 0이 하나뿐이라서 오류가 줄어듭니다.

Q2. 2의 보수는 언제부터 사용됐나요?

거의 모든 현대 컴퓨터 아키텍처에서 기본 방식으로 사용되고 있어요. 1970년대부터 대세가 됐습니다.

Q3. 2의 보수 표현의 단점은 없나요?

범위 제한과 해석의 어려움이 있지만, 연산의 효율성 덕분에 널리 쓰입니다.

Q4. 음수를 표현할 수 있는 최대 수는?

n비트라면, 표현 가능한 음수는 -2^(n-1)까지입니다. 예: 8비트 → -128

Q5. 부호와 크기 방식과 차이점은?

2의 보수는 0이 하나고, 연산이 훨씬 간단하다는 게 가장 큰 차이입니다.

 

💬 여러분은 어떠신가요?

처음 2의 보수 배우실 때 헷갈리지 않으셨나요?
혹시 본인이 외우는 팁이나, 실전에서 겪은 경험담이 있다면 댓글로 공유해주세요!
다음엔 실전 비트 연산에 대해 다뤄볼 예정인데, 궁금하신 내용이 있다면 미리 알려주세요 🙌

 

✨ 에필로그

저도 처음엔 2의 보수가 왜 필요한지 몰라서 혼란스러웠던 기억이 있어요. 근데 알고 나니 너무 명쾌해서 신기하더라고요! 컴퓨터 구조나 프로그래밍 입문하시는 분들이 꼭 알고 넘어가야 할 개념입니다.

반응형

댓글