C Primer Plus(第六版)15.9 编程练习 第2题

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

  • 11
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值