C Primer Plus第六版第15章编程练习第2题
2.编写一个程序,通过命令行参数读取两个二进制字符串,对这两个二进制数使用~运算符、& 运算符、| 运算符和 ^ 运算符,并以二进制字符串形式打印结果(如果无法使用命令行环境,可以通过交互式让程序读取字符串)。
#include <stdio.h> #include <string.h> #include <ctype.h> #include <limits.h> int bstoi(const char *pbin); char * itobs(int n,char *ps); void show_bstr(const char*str); int main(int argc,char *argv[]) { if(argc!=3) { puts("paramaters is wrong!"); return -1; } int a,b; char ps[CHAR_BIT *sizeof(int)+1]; a=bstoi(argv[1]); b=bstoi(argv[2]); printf("~%s=",argv[1]); show_bstr(itobs(~a,ps)); printf("~%s=",argv[2]); show_bstr(itobs(~b,ps)); printf("%s&%s=",argv[1],argv[2]); show_bstr(itobs(a&b,ps)); printf("%s|%s=",argv[1],argv[2]); show_bstr(itobs(a|b,ps)); printf("%s^%s=",argv[1],argv[2]); show_bstr(itobs(a^b,ps)); return 0; } char * itobs(int n,char *ps) { int i; const static int size=CHAR_BIT *sizeof(int); for(i=size-1;i>=0;i--,n>>=1) ps[i]=(01&n)+'0'; ps[size]='\0';