c언어 비트단위 연산자에서 질문입니다 ㅜㅜ
-
게시물 수정 , 삭제는 로그인 필요
연산자 비트단위 연산에서
int main()
{
int a;
char a=15;
char c=30;
char b=~a;
char d=~c;
printf("%d",b);
printf("%d",d);
return 0;
}
위의 결과값이 -16 과 -31 이 출력이됩니다
컴퓨터 데이터방식의 이해를 해보면 00001111 <--- 이것이 15 입니다
~비트단위연산자를 통하여 11110000 이되고 이것을 음수로 출력하려면
11110000 -1 <---- -17 이 되어버립니다 ㅡㅡ (코딩해서 컴파일해보면 -16 결과값이 나오지만 계산해보면 -17 이되네요 )
하지만 00011110 <--- 이것은 30 입니다
11100001 -1 <---- -31 이 됩니다 (코딩한 컴파일 결과값과 계산해본 결과값이 같네요 )
대체 왜이런거죠 ㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜ
연산자 비트단위 연산에서
int main()
{
int a;
char a=15;
char c=30;
char b=~a;
char d=~c;
printf("%d",b);
printf("%d",d);
return 0;
}
위의 결과값이 -16 과 -31 이 출력이됩니다
컴퓨터 데이터방식의 이해를 해보면 00001111 <--- 이것이 15 입니다
~비트단위연산자를 통하여 11110000 이되고 이것을 음수로 출력하려면
11110000 -1 <---- -17 이 되어버립니다 ㅡㅡ (코딩해서 컴파일해보면 -16 결과값이 나오지만 계산해보면 -17 이되네요 )
하지만 00011110 <--- 이것은 30 입니다
11100001 -1 <---- -31 이 됩니다 (코딩한 컴파일 결과값과 계산해본 결과값이 같네요 )
대체 왜이런거죠 ㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜ