Java位操作 - (num >> = 1)做什么?

Alg*_*ner 9 java bit-manipulation bit-shift

我正在查看一些代码,这些代码输出一个带有前置0的二进制形式的数字.

    byte number = 48;
    int i = 256; //max number * 2
    while( (i >>= 1) > 0) {
        System.out.print(((number & i) != 0 ? "1" : "0"));
    }
Run Code Online (Sandbox Code Playgroud)

并且不明白它的i >>= 1作用.我知道i >> 1向右移动1位但不明白它的=作用,据我所知,不可能搜索">> ="来找出它意味着什么.

tak*_*eek 17

i >>= 1只是shorhand用于i = i >> 1在以同样的方式i += 4是短期的i = i + 4

编辑:具体来说,这些都是复合赋值运算符的例子.

  • 数学上将数字右移1等于将数字除以2. (2认同)