通常,减法是作为求反来实现的,然后是加法。因此,对于您的示例,CPU 将在内部取 56 并添加 -66。在 x86(或大多数其他现代处理器)上,否定将使用二进制补码完成,这意味着否定转换为“对所有位进行补码,然后加一个(并忽略任何进位)”。
0011 1000
- 0100 0010
---------
Run Code Online (Sandbox Code Playgroud)
第二个操作数转换如下:
complement bits: 1011 1101
Increment: 1011 1110
Run Code Online (Sandbox Code Playgroud)
所以执行的操作是:
0011 1000
+ 1011 1110
--------------
= 1111 0110
Run Code Online (Sandbox Code Playgroud)
此结果可以视为 246(作为无符号数)或 -10(作为有符号数)。