读书人

[待解决]位演算没有得到预期的结果

发布时间: 2013-07-04 11:45:55 作者: rapoo

[待解决]位运算没有得到预期的结果
位运算没有得到预期的结果

/*题目:学习使用按位取反~.   
1.程序分析:~0=1; ~1=0;
2.程序源代码:*/
#include <stdio.h>//包含标准输入输出头文件
//主函数
void main()
{
unsigned a,b;//定义整型变量
a=234;//二进制(1110 1010)
b=~a;//按位取反(0001 0101)
printf("\40: The a's 1 complement(decimal) is %d \n",b);
a=~a;
printf("\40: The a's 1 complement(hexidecimal) is %x \n",a);
}

[待解决]位演算没有得到预期的结果
[解决办法]
你想得到怎样的结果呢?

a=234;//二进制(00000000 00000000 00000000 1110 1010)
b=~a;//按位取反(11111111 11111111 11111111 0001 0101)


b的符号位为1,所有理解为负数,即按补码存储,原码为补码-1取反为100000000 00000000 0000000 1110 1011
所以b为-255,十六进制为fffffff15

读书人网 >C++

热点推荐