【问题标题】:what does << mean? [duplicate]<< 是什么意思? [复制]
【发布时间】:2013-10-27 09:01:02
【问题描述】:

看了this话题中ByteArray转换成int的方法,看到这行有点迷茫:

ret[2] = (byte) ((a &gt;&gt; 8) &amp; 0xFF);
如果 &gt;&gt; 运算符的含义与我们使用 int/float 时的 &gt; 运算符相同..?当它们不相等时,它的含义是什么?

【问题讨论】:

  • 搜索java operators
  • 这意味着,这不是一个好问题,请阅读java operators docs。
  • 是的,我明白了tutorialspoint.com/java/java_basic_operators.htm 我不知道我是否应该删除这个话题
  • 这些是位操作符。读取 java 运算符。
  • +1。仅仅因为可以在 Javadoc 中找到某些内容并不意味着它不应该作为 Stack Overflow 上的问题存在。 @SotiriosDelimanolis“搜索java运算符”......也许有人会这样做并找到这个问题。很有用。

标签: java byte bytearray


【解决方案1】:
8 >> 2 = 2
8 >> 3 = 1

二进制

00001000 >> 2 = 00000010
00001000 >> 3 = 00000001

1 << 2 = 4
1 << 3 = 8

二进制:

00000001 << 2 = 00000100
00000001 << 3 = 00001000

使用 ~ 来否定:

byte b = ~01001000

那么 b 是 10110111

&运算符有点交集

10010101 & 01010011 = 00010001

还有许多其他运算符存在,这是一种非常强大的方法来做很多事情

【讨论】:

    【解决方案2】:

    右移&gt;&gt; 运算符将左操作数向右移动,并按其右操作数指定的位数进行符号扩展。这意味着 n 位的值向右移动,导致 n 个高位包含与未移位值相同的值。该运算符从不抛出异常。

    &gt; 运算符仅用于比较

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-09-12
      • 2015-01-22
      • 2020-10-27
      • 2015-07-15
      • 2018-07-17
      • 2012-08-13
      • 2011-12-23
      • 2011-07-29
      相关资源
      最近更新 更多