|
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 |
|