计算机存储数值用的是原码,但对数值进行计算时却用的是补码。
负数运算:
补码:反码+1
反码:原码的符号位不变,其他位取反。
原码:符号位为1表示为负数,符号位为0表示为正数。
-5 + -4 = ?//我们在内存中有一个int类型长度的数值-5和-4,我们要对它们进行加法运算。
//-5和-4在内存中的存储形式。
10000000 00000000 00000000 00000101 //510000000 00000000 00000000 00000100 //4
1、将它们的原码依次转换为反码、补码:
11111111 11111111 11111111 11111010 // -5的反码
11111111 11111111 11111111 11111011 //-5的补码
11111111 11111111 11111111 11111011 //-4的反码
11111111 11111111 11111111 11111100 //-4的补码
2、进行运算。
11111111 11111111 11111111 11111011
11111111 11111111 11111111 11111100----------------------------------------------------------
11111111 11111111 11111111 11111111
//得出结果的补码,这一步还没有结束,我们需要把补码转换为原码然后存储到内存中。补码转原码,就是原码转补码的逆操作。
11111111 11111111 11111111 11111110 补码-1等于反码
11111111 11111111 11111111 11111110 反码符号位不变,其余取反得出原码。
10000000 00000000 00000000 00000001 将结果的原码存储到内存中。
正数运算:
正数的原码、反码、补码都一样,算起来也简单。O(∩_∩)O
5+4 = ?
00000000 00000000 00000000 00000101 5的补码
00000000 00000000 00000000 00000100 4的补码
00000000 00000000 00000000 00000100 4的补码
----------------------------------------------------------------------
00000000 00000000 00000000 00001001 = 结果的补码 = 反码 = 原码.
到此结束,掀一次桌子放松一下把。 (╯‵□′)╯︵┻━┻