#include <stdio.h>
#include <limits.h>
#define LEN 32
//15.9-2 10111101 111000111
int get_int(char * str);
char * itobs(int n, char * ps);
int main( int argc, char *argv[] )
{
int num,num1;
char string[LEN];
if( argc != 3 )
{
printf("erro arguments supplied.\n");
}
printf("argv[1]字符串 =%s\n",argv[1]);
printf("argv[2]字符串 =%s\n",argv[2]);
num=get_int(argv[1]);
printf("argv[1]十进制 =%d\n",num);
num1=get_int(argv[2]);
printf("argv[2]十进制 =%d\n",num1);
printf("原argv[1] =%s\n",itobs(num, string));
printf("原argv[2] =%s\n",itobs(num1, string));
printf("反argv[1] =%s\n",itobs(~num, string));
printf("反argv[2] =%s\n",itobs(~num1, string));
printf("argv[1] 且 argv[2]=%s\n",itobs(num&num1, string));
printf("argv[1] 或 argv[2]=%s\n",itobs(num|num1, string));
printf("argv[1]异或argv[2]=%s\n",itobs(num^num1, string));
}
int get_int(char * str)
{
int val = 0;
int i=0;
while (*str != '\0')
{
val = 2 * val + (*str++ - '0');
i++;
}
return val;
}
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';
return ps;
}