8비트 2진수 변환시 왜 1을 더해야하나요?
52
3 asked
보수로 변환한 뒤, 더하기 1을 하는게 잘 이해가 안됩니다.
혹시 왜 더하기 1을 해야하는지 알 수 있을까요?
Answer 2
0
안녕하세요? 질문&답변 도우미 durams입니다.
단순하게 이유를 말씀드리자면 컴퓨터에서 정수를 나타내기 위한 방식 중 하나인 2의 보수법의 규칙입니다.
과거에는 1의 보수법이라는 방식도 있었으나, 정수 0이 두 개의 비트 패턴으로 나타나는 등 몇 가지 단점 때문에 현재는 2의 보수법을 사용합니다. 부정 연산(negation) 시 비트 패턴을 뒤집고 1을 더하는 건 1의 보수법이 가지고 있던 단점을 없애기 위해 고안한 방법이라고 생각하시면 될 것 같습니다.
0
안녕하세요, 인프런 AI 인턴입니다. 송영진님.
2진수에서 값을 부호 있는 숫자로 변환하거나 마이너스로 바꿀 때, 2의 보수라는 개념을 사용합니다. 추가적으로 설명드리면:
2의 보수 개념: 2진수의 값을 반대로 바꾸고(0을 1로, 1을 0으로) 1을 더하는 과정을 통해 부호를 바꿉니다. 이는 컴퓨터가 음수 연산을 효과적으로 처리할 수 있도록 해주는 방법입니다.
이유: 2의 보수를 사용하여 음수를 표현하면, 덧셈과 뺄셈 연산을 동일한 방식으로 처리할 수 있게 되어 효율적인 연산이 가능해집니다. 이러한 방식은 프로세서의 구조와 연관이 깊습니다.
예시: 만약 4비트 체계에서 5를 음수로 변환하고자 한다면, 2진수로 0101을 반전하여 1010을 만들고 여기에 1을 더하여 1011을 만들면 -5를 표현할 수 있게 됩니다.
관련된 질문을 다룬 게시물을 참조하시면 도움이 될 수 있습니다:
- 변수에 값을 할당하기 전에 컴퓨터는 어떻게 계산을 하나요? - 여기서는 Overflow와 관련된 내용을 설명하며, 2의 보수 시스템의 작동 원리에 대해 다루고 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
완전히 똑같이 따라해도 exe파일이 안만들어져서 실행이 안됩니다.
1
43
3
main 함수에서 왜 int만 선언이 되는걸까요
1
51
2
혹시 강의를 빠르게 수강하려면 어디서부터 듣는게 좋을까요?
1
46
1
프로토타입과 함수간의 인자 불일치
1
72
2
12.12 헤더 관련 질문
1
59
2
Visual Studio Community 2026 사용 문의
1
132
2
Q. 15:30, 부호가 있는 8비트 정수 질문
1
59
2
getchar(), putchar()
1
92
3
강의자리ㅛ
1
78
2
비주얼스튜디오코드로 공부해도 상관없나요?
1
112
2
소스파일안에 여러 파일
1
74
2
F5와 F7의 차이
1
75
2
c = TWO * (a+b); 에서 a와 b는?
1
58
2
; 세미콜론을 붙이는 기준에 문의
1
68
1
Step over 기능 문의
1
52
2
2.6 강의 따옴표 출력 규칙 문의
1
74
2
int main 함수 관련 오류 문의
1
67
2
13.4 words[0]
0
60
2
11.7 함수를 구현해 봤습니다.
1
62
2
11.6 직접 strcmp와 strncmp를 구현해 보았습니다.
1
64
2
11.6 my_strcat과 my_strncat을 구현해봤습니다.
1
53
2
11.6 fit_str함수를 구현해 봤습니다.
1
53
2
11.5 코드 구현
1
66
2
C언어 엔터
1
58
2

