§ 3.4 位 运 算 符

位 运 算 符 用 来 对 二 进 制 位 进 行 操 作 ,Java中 提 供 了 如 下 表所 示 的 位 运 算符 :

位 运 算 符 中 ,除   ~   以 外 ,其 余 均 为 二 元 运 算 符 。

操 作 数 只 能 为 整 型 和 字 符 型 数 据 。

3.4.1 补 码

Java使 用 补 码 来 表 示 二 进 制 数 ,在 补 码 表 示 中 ,最 高 位 为 符号 位 ,正 数 的 符 号 位 为 0,负 数 为 1。 补 码 的 规 定 如 下 :

对 正 数 来 说 ,最 高 位 为 0,其 余 各 位 代 表 数 值 本 身 (以 二 进制 表 示 ),如 +42的补 码 为 00101010。

对 负 数 而 言 ,把 该 数 绝 对 值 的 补 码 按 位 取 反 ,然 后 对 整 个数 加 1,即 得 该 数的 补 码 。 如 -42的 补 码 为 11010110 (00101010 按 位 取 反 11010101 +1=11010110 )

用 补 码 来 表 示 数 ,0的 补 码 是 唯 一 的 ,都 为 00000000。 (而 在 原码 ,反 码 表 示中 ,+0和 -0的 表 示 是 不 唯 一 的 ,可 参 见 相 应 的 书 籍 )。 而 且 可 以用 111111表 示 -1的 补 码 (这 也 是 补 码 与 原 码 和 反 码 的 区 别 )。

3.4.2 按 位 取 反 运 算 符 ~

~   是 一 元 运 算 法 ,对 数 据 的 每 个 二 进 制 位 取 反 ,即 把 1变为 0,把 0变 为 1。

例 如 :

0010101

1101010

注 意 ,~ 运 算 符 与 - 运 算 符 不 同 ,~ 21≠ -21。

3.4.3 按 位 与 运 算 符 &

参 与 运 算 的 两 个 值 ,如 果 两 个 相 应 位 都 为 1,则 该 位 的 结 果为 1,否 则 为 0。即 :

0 & 0 = 0,0 &1 = 0,1 & 0 = 0,1 & 1 = 1

分类: Java

发表评论

电子邮件地址不会被公开。 必填项已用*标注