C_C++

음수를 2의 보수로 표현하는 방법, C언어 코드

고니자니 2025. 9. 10. 12:44
반응형

아래 예제는 정수를 입력받아, 해당 정수를 8비트 이진수로 출력하면서 양수/음수의 2의 보수 표현을 확인할 수 있게 해줍니다.

#include <stdio.h>

// 8비트 이진수 출력 함수
void printBinary8(int num) {
    for (int i = 7; i >= 0; i--) {
        printf("%d", (num >> i) & 1);
    }
}

int main() {
    int num;

    printf("정수를 입력하세요: ");
    scanf("%d", &num);

    printf("입력 값: %d\n", num);

    printf("8비트 이진수 표현: ");
    printBinary8(num);
    printf("\n");

    if (num < 0) {
        printf("해당 값은 2의 보수로 저장되어 있습니다.\n");
    } else {
        printf("해당 값은 일반 양수 표현입니다.\n");
    }

    return 0;
}

실행 예시

 
정수를 입력하세요: -5
입력 값: -5
8비트 이진수 표현: 11111011
해당 값은 2의 보수로 저장되어 있습니다.

 

 
정수를 입력하세요: 5
입력 값: 5
8비트 이진수 표현: 00000101
해당 값은 일반 양수 표현입니다.
 
 
음수를 2의 보수로 표현하는 방법, C언어 코드

🔹 음수를 2의 보수로 표현하는 방법

예를 들어, 8비트로 표현한다고 가정하면:

  1. 양수 이진수 표현
    절댓값을 2진수로 나타냅니다.
    예: -5라면, 우선 5를 8비트로 표현 → 00000101
  2. 1의 보수(One’s Complement)
    모든 비트를 반전시킵니다.
    00000101 → 11111010
  3. 2의 보수(Two’s Complement)
    1의 보수에 +1을 더합니다.
    11111010 + 1 = 11111011

👉 따라서 -5의 8비트 2의 보수 표현은 11111011

 

반응형