C언어에서 보수의 개념이 이해가 안됩니당…
-
게시물 수정 , 삭제는 로그인 필요
#include <stdio.h>
int main()
{
int num1=49;
printf(“~num1 = %d₩n”,~num1);
return 0;
}
이런 코드를 작성을 해보았는데요
결과값이 ~num1 = -50이 나오는데 여기서 질문이 있습니다.
1. “~” 연산자는 단순히 비트를 반전시키는 연산자인 것으로 알고 있는데, 그렇다면 num1을 2진수로 바꾸면 00110001이고, 이것을 반전시켰을때 11001110이자나요, 그러면 이것을 10진수로 바꾼 206이 나와야 되는것 아닌가요..?
2.만약 맨앞 비트가 1이어서 음수가 나와야 되는 것이라면,11001110은 206이 아니라 다른 숫자라는 얘긴데,그럼 206은 2진수로 어떻게 표현하나요
3.11001110값이라는 수치가 나왔는데 왜 보수를 사용해야 하며, 보수를 계산해보면 00110010이라는 값이 나오는데,이것이 왜 양수 50이 아니라 -50이 나오는걸까요
질문이 많아서 죄송합니다 ㅠㅠ초보라서…
int main()
{
int num1=49;
printf(“~num1 = %d₩n”,~num1);
return 0;
}
이런 코드를 작성을 해보았는데요
결과값이 ~num1 = -50이 나오는데 여기서 질문이 있습니다.
1. “~” 연산자는 단순히 비트를 반전시키는 연산자인 것으로 알고 있는데, 그렇다면 num1을 2진수로 바꾸면 00110001이고, 이것을 반전시켰을때 11001110이자나요, 그러면 이것을 10진수로 바꾼 206이 나와야 되는것 아닌가요..?
2.만약 맨앞 비트가 1이어서 음수가 나와야 되는 것이라면,11001110은 206이 아니라 다른 숫자라는 얘긴데,그럼 206은 2진수로 어떻게 표현하나요
3.11001110값이라는 수치가 나왔는데 왜 보수를 사용해야 하며, 보수를 계산해보면 00110010이라는 값이 나오는데,이것이 왜 양수 50이 아니라 -50이 나오는걸까요
질문이 많아서 죄송합니다 ㅠㅠ초보라서…