【问题标题】:What is the purpose of `<<=` in Java? [duplicate]Java中`<<=`的目的是什么? [复制]
【发布时间】:2014-05-11 22:55:54
【问题描述】:

所以,我看到了这段将 ascii 转换为二进制的代码:

String s = "foo";
byte[] bytes = s.getBytes();

StringBuilder binary = new StringBuilder();
for (byte b : bytes)
{
    int val = b;
    for (int i = 0; i < 8; i++)
    {
        binary.append((val & 128) == 0 ? 0 : 1);
        val <<= 1;
    }
    binary.append(' ');
}
System.out.println("'" + s + "' to binary: " + binary);

在这种情况下,&lt;&lt;= 运算符的作用是什么?这段代码究竟是如何构建s 的二进制表示的?

【问题讨论】:

  • 二进制是什么?那是什么“二进制表示”?注意你.getBytes()没有指定编码;如果我.getBytes(StandardCharsets.UTF_16) 我将获得与.getBytes(StandardCharsets.US_ASCII) 不同的结果。
  • 你的参考书是怎么说的?

标签: java string bitwise-operators


【解决方案1】:

&lt;&lt; 是移位运算符。它将位 x 向左移动。 &lt;&lt;= 将移位运算符与赋值相结合。所以val &lt;&lt;= 1val = val &lt;&lt; 1 相同,后者获取 val 的位并将它们向左移动一位。

【讨论】:

    猜你喜欢
    • 2015-06-12
    • 1970-01-01
    • 2011-04-07
    • 1970-01-01
    • 1970-01-01
    • 2010-10-08
    • 2012-04-12
    • 2021-06-07
    • 1970-01-01
    相关资源
    最近更新 更多