| 
 | 
 
20鱼币 
 本帖最后由 piliyang1 于 2016-2-9 21:30 编辑  
 
我在读这本书第七章代码清单 7 - 6时我按照书里的代码写的然后运行以后是下边这样 
并附上源码 
 
 
- /*
 
 -         时间:2016年2月7日16:24:58
 
 -         目的:按位运算符的初级使用 
 
 -         始终未运行成功 
 
 - */
 
 - #include <stdio.h>
 
  
- //返回整数x中设置的位数
 
 - int count_bits(unsigned x)
 
 - {
 
 -         int bits = 0;
 
 -         while (x)
 
 -         {
 
 -                 if (x & 1U)
 
 -                         bits++;
 
 -                 x >>= 1;
 
 -         }
 
 -         return bits;
 
 - } 
 
 -  
 
 - //返回unsigned型的位数
 
 - int int_bits(void)
 
 - {
 
 -         return count_bits(-0U);
 
 - } 
 
 -  
 
 - //显示unsigned型的位的内容
 
 - void print_bits(unsigned x)
 
 - {
 
 -         int i;
 
 -         for (i = int_bits() - 1; i >= 0;i--)
 
 -                 putchar(((x>> i) & 1U) ?'1' : '0');
 
 - } 
 
  
- int main()
 
 - {
 
 -         unsigned a, b;
 
 -         
 
 -         printf("请输入两个非负整数。\n");
 
 -         printf("a : ");        scanf("%u", &a);
 
 -         printf("b : ");        scanf("%u", &b);
 
 -         
 
 -         printf("\na     = ");        print_bits(a);
 
 -         printf("\nb     = ");        print_bits(b);
 
 -         printf("\na & b = ");        print_bits(a & b);//a和b的逻辑与 
 
 -         printf("\na ! b = ");        print_bits(a | b);//a和b的逻辑或 
 
 -         printf("\na ^ b = ");        print_bits(a ^ b);//a和b的逻辑异或 
 
 -         printf("\n~a    = ");        print_bits(~a);//a的反码 
 
 -         printf("\n~b    = ");        print_bits(~b); //b的反码 
 
 -         
 
 -         return 0;
 
 - }
 
 - /*
 
 -         在Dev-C++中的编译并运行的结果是:
 
 - ---------------------------------
 
 -         请输入两个非负整数。
 
 -         a : 1963
 
 -         b : 12345
 
 -         
 
 -         a     =
 
 -         b     =
 
 -         a & b =
 
 -         a ! b =
 
 -         a ^ b =
 
 -         ~a    =
 
 -         ~b    =
 
 - ---------------------------------
 
 - */
 
  复制代码 
 
 
 
而这本书自己写的运行结果是: 
       请输入两个非负整数。 
        a : 1963 
        b : 12345 
         
        a        =0000011110101011 
        b        =0011000000111001 
        a & b =0000000000101001 
        a ! b   =0011011110111011 
        a ^ b =0011011110010010 
        ~a     =1111100001010100 
        ~b     =1100111111000110 |   
 
 
 
 
 
 |