c언어
C언어 - Right shift
pi92
2021. 3. 2. 19:34
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main() {
int num, n;
int i;
int x = 0x80000000;
scanf("%d %d", &num, &n);
for (int i = 0; i < 32; i++) // 입력값 출력
{
if (i % 4 == 0 && i != 0)
putchar(' ');
if (num & (1 << (31 - i)))
putchar('1');
else
putchar('0');
}
putchar('\n');
//연산과정
for (i = 0; i < n; i++) {
if (num > 0) { //양수일때
if (num & 1) {
// num = ((num >> 1) | x); //끝에가 1일 때
num = num >> 1;
num = num | x;
}
else
num = num >> 1;
}
else { // 음수일떄
if (num & 1)
num = num >> 1;
else {
// num = ((num >> 1) & (x - 1)); // 끝에가 0일 때
num = num >> 1;
num = num & (x-1);
}
}
}
for (int i = 0; i < 32; i++) // 출력값 출력
{
if (i % 4 == 0 && i != 0)
putchar(' ');
if (num & (1 << (31 - i)))
putchar('1');
else
putchar('0');
}
return 0;
}