>>,<<를 써서 출력하는건데
답은 6이고.. 첫번쨰는 책의 답안지이고 두번째거는 제가 푼건데요
제가 푼거는 자꾸 0이 나옵니다
#include<stdio.h>
int main(void)
{
int num = 3 ;
num= num<<3 ;
num= num>>2 ;
printf("3 x 8 / 4 = %d" , num) ;
return 0;
}
위는 책의 답
아래꺼는 제건데 왜 안되나요?
자꾸 0이 뜨네여
#include<stdio.h>
int main(void)
{
int num = 3 ;
int num1 ;
num1= num<<3 ;
num1= num>>2 ;
printf("3 x 8 / 4 = %d" , num1) ;
return 0;
}
Hit : 5504 Date : 2012/03/26 02:06
lainb
위에거는 num변수를 <<3 번 비트를 이동시키고 다시 >>2번 비트를 이동시킵니다. 즉 <<1번 한셈이고
아래 코드는 num1변수에 num변수의 값을 << 3 번 비트를 이동시킨 값을 넣고
num변수의 값을 >>2번 비트를 이동시킨 값을 다시 num1에 덮어씌었습니다 즉 그냥 num 변수에>>2번 한 결과를 num1에 준 셈이네요.
그럼 코드를 고치려면 그리고 num1변수를 굳이 쓴다면
num1 = num << 3; // 0000 0011 -> 00001 1000
num1 = num1 >>2; // 0001 1000 -> 0000 0110
로 하면 될거같네요
2012/03/26
dbman
정답지.
정수 3을 <<3한 결과는 00011000 = 24를 num에 다시 대입
대입된 24를 다시 >>2를 한 결과 00000110 = 6
dokito님이 하신것.
정수 3을 <<3한 결과는 00011000 = 24로 동일.
여기서 24를 비트연산 하신게 아니라 num(정수 3값)을 다시 >>2 하셨음
정수 3은 00000011인데 >>2 비트연산 시켰으므로 00000000을 가지게 됨