`
GongQi
  • 浏览: 100994 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

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

 
阅读更多
// c primer plus上的内容,位运算
#include <stdio.h>
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
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics