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;}