在上学期学习c语言c++的时候就接触到了原码、反码和补码这三个概念。

首先,我自己的理解,原码、反码和补码这三个概念都是基于二进制而言。

原码包括符号位和数值位,数值位就是真值的绝对值,符号位位“0”时表示正数,符号位为“1”时表示负数。这里就可以看出,原码的整数和小数中“0”的表示形式各有2种,“+0”和“-0”不一样,以8位机器数为例,整数的“+0”原码为0,0000000;整数的“-0”原码为1,0000000;小数的“+0”原码为0.0000000,小数的“-0”原码为1.0000000。

反码跟原码是正数时,一样;负数时,反码就是原码符号位除外,其他位按位取反。以8位机器数为例,整数的“+0”原码为0,0000000,反码为0,0000000;整数的“-0”原码为1,0000000,反码为1,1111111;小数的“+0”原码为0.0000000,反码为0.0000000;小数的“-0”原码为1.0000000,小数的“-0”反码为1.1111111。

补码,我认为就是因为在计算过程中因为使用原码会出错,所以引进了补码这个概念。补码是计算机把减法运算转化为加法运算的关键编码。正数的补码与其原码相同;负数的补码是在其反码的末位加1。

在Java中,采用的是补码。

相关文章:

  • 2022-12-23
  • 2021-08-25
  • 2022-01-19
  • 2021-12-26
  • 2021-12-01
  • 2021-10-12
  • 2022-12-23
  • 2022-02-17
猜你喜欢
  • 2022-12-23
  • 2022-01-19
  • 2021-10-19
  • 2021-04-07
  • 2022-12-23
  • 2021-06-15
  • 2022-12-23
相关资源
相似解决方案