Oleg Asked:2020-10-26 18:53:43 +0800 CST2020-10-26 18:53:43 +0800 CST 2020-10-26 18:53:43 +0800 CST 负数按位右移 772 -7 >> 1 结果是-4。 它被1000 0111移到了右边。似乎它应该工作1000 0011。它是怎么发生的,发生了什么1000 0100?我错过了什么? 为简单起见,顺其自然byte。 системы-счисления 1 个回答 Voted Best Answer Pavel Mayorov 2020-10-26T18:58:28+08:002020-10-26T18:58:28+08:00 实际上,二进制补码中的 -7 不是1000 0111,而是1111 1001。右移后,原来1111 1100等于-4。没错,电脑没有出错。 PS要小心这种转变。在 C++ 中,他们给出了 UB。
实际上,二进制补码中的 -7 不是
1000 0111
,而是1111 1001
。右移后,原来1111 1100
等于-4。没错,电脑没有出错。PS要小心这种转变。在 C++ 中,他们给出了 UB。