c语言 位运算问题??

2024-11-29 10:43:47
推荐回答(3个)
回答1:

int a= -1; -- 这是有符号数,VC++ 编译器处理为 long int
a= (unsigned char) a | 0377; 转为无符号数就用补码了。

无符号 声明 加 unsigned
unsigned short int, unsigned long int, unsigned char.

回答2:

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的补码

回答3:

你好,请问你怎么知道是带入的后面的来进行运算?
#include
#include

int main()
{
int a = -1, b = 0;
b = a|0377;
printf("a = %x, b = %x",a, b);
system("pause");
return 0;
}
如果您是推断的话,输出结果为两个0xffffffff,说明您给的推断不正确。