c语言 整数转二进制取位,C语言位运算--将整数转换成二进制串以及反转整数后N位...

// c primer plus上的内容,位运算

#include char * itobs (int n,char * ps);

void show_bstr(const char *);

int invert_end(int num,int bits);

int main(void){

char bin_str[8*sizeof(int)+1];

int number;

puts("Enter integers and see them in binary.");

puts("Non-numberic input terminates program.");

while(scanf("%d",&number)==1){

itobs(number,bin_str);

printf("%d is \n",number);

show_bstr(bin_str);

putchar('\n');

number = invert_end(number,4);

printf("Inverting the last 4 bits gives\n");

show_bstr(itobs(number,bin_str));

putchar('\n');

}

return 0;

}

//整数转换成二进制串

char* itobs(int n,char * ps){

int i;

static int size = 8 * sizeof(int);

for(i=size-1;i>=0;i--,n >>=1)

ps[i]=(01 & n) + '0';

ps[size]='\0';

return ps;

}

//4位一组显示二进制字符串

void show_bstr(const char * str){

int i=0;

while(str[i]){

putchar(str[i]);

if(++i %4 ==0 && str[i])

putchar(' ');

}

}

//反转数最后N位

int invert_end(int num,int bits){

int mask=0;

int bitval=1;

while(bits-->0){

mask |=bitval;

bitval <<=1;

}

return num^mask;

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值