비트연산자 뺄셈 구현에서 질문이 있습니다.
안녕하세요 선생님!
선생님 덕분에 재미있게 C를 공부하고 있습니다. 감사합니다.
다름이 아니고 비트연산자로 뺄셈을 구현할 때 약간 이해가 안 가는 점이 있어 질문을 드립니다.
int a = 9, b = 6;
printf("%d\n", a + (~b + 1));
// 1001 + 1010 = 10011 ....???
return 0;10진수 9에서 10진수 6을 빼는 연산에서
6을 2진수로 치환한 후 부정을 걸어 1의 보수로 만들고 1을 더하면 1010이 되는 것으로 알고 있습니다.
여기에 10진수 9를 2진수로 치환한 1001을 더하면 10011이 됩니다.
그럼 답이 19가 되어야 하지 않을까 생각이 듭니다.
자리올림을 소거하면 0011로 3이 맞지만
그걸 따로 코딩을 안해준 상태에서는 19가 나와야하지 않나요?
혹시 C에서 자리올림을 알아서 소거해주는 걸까요? 아니면 제가 계산을 잘 못하고 있는 걸까요?
답변 주시면 너무 감사하겠습니다!
답변 2
2
1010이아니라
1111 1111 1111 1111 1111 1111 1111 1010이니까 그래요
더하면 자리수넘어감..
주소 연산자(&) 간접 지정자(*) 반대 개념
0
22
1
Virtual Memory, Memory, Memory mapping tables
0
42
1
샘플코드 출력 오류 발생 질문드립니다
0
59
2
값의 교환에 사용되는 변수의 위치.
0
83
2
메모리 비교에 관한 질문
0
78
2
문자열 Null
0
60
1
C, C++
0
83
2
문자열 입출력 코드 에러
0
58
2
선생님! 120화 2분 50초 질문입니다.
0
65
1
caller 가 메모리 할당 해제를 할 때의 문제점 질문
0
60
2
단축키 맞는지 여부 문의드립니다.
0
58
2
문자열을 사용하는 이중 포인터에 대하여 질문합니다
0
62
1
char 포인터 변수의 크기에 대하여 제가 이해한 것이 맞을까요
0
77
2
용어 설명 필요
0
55
2
stdin, stdout
0
69
2
필수 실습 (최댓값을 반환하는 함수)
0
90
2
아......ㅠㅠ
0
96
2
버퍼 내 엔터
0
69
1
2진수 뺄셈에서 carry-out
0
110
2
union 식별자는 실무에서 보통 어디에서 사용하나요?
0
76
2
필수실습문제 공부법 (진도 vs 복습)
0
100
2
예제파일 다운로드
0
73
2
Visial Studio Code 를 설치해서 사용해도 수업을 따라가는데 지장이 있나요?
0
112
3
연산자 기본이론 강의 질문
0
57
2





