小编San*_*sj5的帖子

为什么补码通过printf表现不同?

我正在阅读关于按位运算符的章节,我遇到了1的补码运算符程序,并决定在Visual C++上运行它.

int main ()
{
   unsigned char c = 4, d;
   d = ~c;
   printf("%d\n", d);
}
Run Code Online (Sandbox Code Playgroud)

它给出了有效的输出: 251

然后我决定直接打印值,而不是d用作变量来保存~c~c.

int main ()
{
   unsigned char c=4;
   printf("%d\n", ~c);
}
Run Code Online (Sandbox Code Playgroud)

它给出了输出-5.

它为什么不起作用?

c variables types bitwise-operators unsigned-char

57
推荐指数
6
解决办法
4663
查看次数

为什么在信号量操作期间必须禁用所有中断?

我正在阅读 Galvin 的操作系统概念。在信号量部分,它说在修改信号量的值时必须禁用对处理器的所有中断。 为什么需要它?

operating-system semaphore mutual-exclusion

5
推荐指数
1
解决办法
1094
查看次数