将String转换为二进制Java。一个问题

时间:2018-11-30 20:26:17

标签: java

我有一个问题,曾经有一个像这样的主题Link,但我无法真正理解代码行binary.append((val & 128) == 0 ? 0 : 1);
谁能向我解释到底是怎么回事?

3 个答案:

答案 0 :(得分:2)

128是10000000并且&是位和运算符-val中除第8位以外的所有内容都将被清零,因此您可以有效地获取数字的第8位,因此对于val就像01111111

  01111111
& 10000000
  --------
  00000000

,该行将返回0

答案 1 :(得分:1)

这是一个位掩码,其形式为数字128,十六进制0x80或二进制形式10000000。&是按位与运算。

在该问题中使用此位掩码的原因非常简单-它采用most significant bit并确定它是0还是1,然后将其用于构建字符的二进制表示形式。

选择128的原因-char是具有128个可能值的整数值,因此在此屏蔽其最大值是确保如何获得值的每个 位。 / p>

答案 2 :(得分:0)

128的二进制是1000 0000。 该段代码将val的第8位的值添加到对象二进制文件中。 (AND功能将第8位以外的所有其他位都清零。)