JAVA 之原码 反码 补码及取反运算符~
发布日期:2021-05-10 23:35:45 浏览次数:41 分类:精选文章

本文共 640 字,大约阅读时间需要 2 分钟。

一、Java中的数据存储与表示方法

原码:数据对应的二进制形式就是这个数据的原码。

  • 原码的符号位存在,0为正,1为负。

为什么要引入反码和补码?

  • 原码在加减法操作中存在问题,导致结果与十进制原数不一致。
  • 两次补码的和等于第三个补码,补码对应的十进制数的和也是成立的。

反码:在原码的基础上,符号位不变。

  • 对于正数,反码等于原码。
  • 对于负数,除了符号位,其他位进行反转。

补码:

  • 对于正数,补码等于原码。
  • 对于负数,补码是反码加1。

补码的本质

要将正数转化为对应的负数,可以通过 0 减去这个数得到。

例如:

  • 8 的二进制是 00001000。
  • -8 可以通过以下方式计算:
    0变成为全为0的形式,减去 00001000:
    00000000 - 00001000
    因为 00000000 < 00001000,不够减,需要向首位借1:
    转变为 1000000000(虚拟全1),然后具体位-位继续运算:
    1000000000 - 00001000 - 00001000 = 111110100

取反运算符 ~ 在 Java 中的应用

在 Java 中,~5 等于 -6。

具体过程:

  • 5 的原码是 0000 0101。
  • 取反后得到 1111 1010,但这是补码形式的表示。
  • 想要得到原码,需先减1,再取反:11111010 - 1 = 11111001再取反得到 00000111,即 7,但符号位保持不变。

例如,补码的运算过程就变得简单直接,不用再处理原码形式下的加减问题。

上一篇:switch 语句之格式 注意事项
下一篇:DOS窗口运行Welcome.java,出错提示是什么意思

发表评论

最新留言

逛到本站,mark一下
[***.202.152.39]2025年05月08日 14时19分40秒