int a= -1; -- 这是有符号数,VC++ 编译器处理为 long int
a= (unsigned char) a | 0377; 转为无符号数就用补码了。
无符号 声明 加 unsigned
unsigned short int, unsigned long int, unsigned char.
a二进制 1111 1111 1111 1111
0377八进制 0000 0000 1111 1111
a|0377按位或 1111 1111 1111 1111
%d 带符号十进制 -1
%o无符号八进制 177777
x=1 二进制 0000 0000 0000 0001
~x 按位取反 1111 1111 1111 1110 没错就是-2的补码
你好,请问你怎么知道是带入的后面的来进行运算?
#include
#include
int main()
{
int a = -1, b = 0;
b = a|0377;
printf("a = %x, b = %x",a, b);
system("pause");
return 0;
}
如果您是推断的话,输出结果为两个0xffffffff,说明您给的推断不正确。