#include <stdio.h>
#include <string.h>
#define SIZE 8 * sizeof(int)
#define BYTE_MASK 01
int func(int num, int bit)
{
int mask = 0;
int bitval = 1;
while(bit -- > 0){
mask |= bitval;
bitval <<= 1;
}
return num ^ mask;
}
void print(char *str)
{
int i;
for(i = 0; i < SIZE; i ++){
putchar(str[i]);
if((i + 1) % 4 == 0)
putchar(' ');
}
putchar('\n');
}
void itob(int num, char *str)
{
int i;
for(i = SIZE - 1; i >= 0; i --, num >>= 1)
str[i] = (num & BYTE_MASK) + '0';
str[SIZE] = '\0';
}
int main(int argc, char **argv)
{
int num, bit;
char str[SIZE + 1];
printf("Please input like: number,bit:");
while(scanf("%d,%d", &num, &bit) == 2){
itob(num, str);
print(str);
itob(func(num, bit), str);
print(str);
printf("Please input number and bit:");
}
return 0;
}
使用位操作对数字进行反转位
最新推荐文章于 2020-10-06 20:32:20 发布