难道〜0意味着其翻转000000000 1111111111?
printf("Check: %i", ~0);
该printf的结果为-1,这就是为什么我很困惑。
是否-1实质上意味着同样的事情11111111111111111位?
难道〜0意味着其翻转000000000 1111111111?
printf("Check: %i", ~0);
该printf的结果为-1,这就是为什么我很困惑。
是否-1实质上意味着同样的事情11111111111111111位?
难道〜0意味着其翻转000000000 1111111111?
是的,它确实。
是否-1实质上意味着同样的事情11111111111111111位?
在二进制补码表示,它的作用。
Does ~0 mean its flipping 000000000 to 1111111111?
是的,这是什么意思。
printf("Check: %i", ~0);
The printf results to -1, which is why I am confused.
这是因为2的补码运算,我们已经常规接受零是
000000000000
并从中减去一个需要“借用”,需要借位,依此类推,直到你“滚”整个寄存器
111111111111
逻辑上,如果添加“1”来表示数字,则携带,携带,等等,直到在相反的方向为“辊”,从而产生000000000
一次。
Does -1 essentially mean the same thing as 11111111111111111 bits?
是的,只要你使用的是2的补符号整数。
----编辑,包括从cincutar的现在删除后(我希望他没有删除)的细节---
看格式化为(无符号)的十六进制数相同的存储器,使用命令
printf("Check: %x", ~0);
这将打印输出
Check ffffffff
这是(对于那些谁不读十六进制好)
11111111111111111111111111111111
这是由于数学运算“两补”。 两个互补的一个很好的视频教程可以在YouTube上找到。 这里是其中的一个:)
Youtube链接
~0 == 0xFFFFFFFF
其中0xFFFFFFFF
= 32倍1,其为-1 2的compliement表示
因为~
是按位操作并接通零到一在每个位:
~0b1010 == 0b0101