• 第 15 章 位操作(invert4)


     1 /*------------------------------------
     2     invert4.c -- 使用位操作显示二进制
     3 ------------------------------------*/
     4 
     5 #include <stdio.h>
     6 #include <limits.h>        //提供 CHAR_BIT 的定义,CHAR_BIT 表示每字节的位数
     7 
     8 char* itobs(int, char*);
     9 void show_bstr(const char*);
    10 int invert_end(int num, int bits);
    11 
    12 int main()
    13 {
    14     char bin_str[CHAR_BIT * sizeof(int) + 1];
    15     int number;
    16 
    17     puts("Enter integers and see them in binary.");
    18     puts("Non-numeric input terminates program");
    19 
    20     while (scanf("%d", &number) == 1)
    21     {
    22         itobs(number, bin_str);
    23         
    24         printf("%d is ", number);
    25 
    26         show_bstr(bin_str);
    27 
    28         putchar('
    ');
    29 
    30         number = invert_end(number, 4);
    31 
    32         printf("Inverting the last 4 bits gives
    ");
    33 
    34         show_bstr(itobs(number, bin_str));
    35         
    36         putchar('
    ');
    37     }
    38 
    39     puts("Bye");
    40 
    41     return 0;
    42 }
    43 
    44 char* itobs(int n, char *ps)
    45 {
    46     const static int size = CHAR_BIT * sizeof(int);
    47 
    48     for (int i(size - 1); i >= 0; --i, n >>= 1)
    49         ps[i] = (01 & n) + '0';
    50     
    51     ps[size] = '';
    52 
    53     return ps;
    54 }
    55 
    56 //以4位为一组,显示二进制字符串
    57 void show_bstr(const char *str)
    58 {
    59     int i = 0;
    60     while (str[i])        //不是空字符
    61     {
    62         fputc(str[i], stdout);
    63 
    64         if (++i % 4 == 0 && str[i])
    65             fputc(' ', stdout);
    66     }
    67 }
    68 
    69 int invert_end(int num, int bits)
    70 {
    71     int mask = 0;
    72     int bitval = 1;
    73 
    74     while (bits-- > 0)
    75     {
    76         mask |= bitval;
    77         bitval <<= 1;
    78     }
    79 
    80     return num ^ mask;
    81 }
    invert4.c

  • 相关阅读:
    开发微信App支付
    SAP 数据类型
    SAP RFC函数
    单点登录
    集中式与分布式
    SAP 表类型
    独立软件供应商
    SAP 优缺点
    SAP 使用
    SAP 费用
  • 原文地址:https://www.cnblogs.com/web1013/p/9207481.html
Copyright © 2020-2023  润新知