【C++】原码反码补码

1,计算

      正数(包括+0):原=反=补

      负数:反=原(除了符号位)取反,补=反+1

2,意义

       提及有符号数,才涉及到以下:

       原码:0表示方法不唯一(符号位变化),且计算结果会错误(1 - 1 = 1 + (-1) = [00000001]原 + [10000001]原 = [10000010]原 = -2)

       反码:结果对了,但是0表示方法仍然不唯一

       补码:实现0表示方法的唯一性;(+0和-0的反码都是0000 0000,1000 0000来表示最小数)

                   减法用加法形式来运算;

                   能多表示一个最小数(如8位,范围是-128~127,规定用1000 0000来表示-128,也因此,最小数逻辑上没有对应的原码)

3,总结:有符号数,都用补码来表示。

猜你喜欢

转载自blog.csdn.net/ethan_guo/article/details/81260671