本帖最后由 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 |