What does ~0 do?
What does ~0 do?
~0是否意味着它的翻转000000000到1111111111?
printf("Check: %i", ~0);
printf结果为-1,这就是我感到困惑的原因。
-1本质上与11111111111111111位的含义相同吗?
~0是否意味着它的翻转000000000到1111111111?
是的,确实如此。
-1本质上与11111111111111111位的含义相同吗?
在2s补码表示中,确实如此。
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,这是2的顺应性表示中的-1
由于~
是逐位运算,并且在每一位中将0变为1:
~0b1010 == 0b0101
相关文章:
- What does SDL_PollEvent do?
- what does int(x) do?
- What does ~0 do?
- What does typedef int var[1]; do?
- What does initializer_list do?
- What does __uuidof(someVar) do?
- What does wxPuts do?
- c++ stl what does base() do
- what does clear() do?
- What does ret reinterpret_cast do?
- What does the int*. syntax do?
- What does ID3DX11EffectVariable::AsSharedResource() do?
- What does void Classname::operator()(){ .... } do?
- what does ++operator do in this void uart_puts(unsigned char
- What does AWT.GetDrawingSurface do?
- What does _stscanf_s do?
- What does STATIC_ASSERTION_FAILURE do?
- What does boost::asio::spawn do?
- what does ntohl(*(uint32_t*) ...)do?
- What does L do?