Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Java Bit Manipulation - What does (num >>= 1) do?

I was looking at some code that outputs a number to the binary form with prepended 0s.

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

and didn't understand what the i >>= 1 does. I know that i >> 1 shifts to the right by 1 bit but didn't understand what the = does and as far as I know, it is not possible to do a search for ">>=" to find out what it means.

like image 711
Algo Learner Avatar asked Apr 08 '11 03:04

Algo Learner


1 Answers

i >>= 1 is just shorhand for i = i >> 1 in the same way that i += 4 is short for i = i + 4

EDIT: Specifically, those are both examples of compound assignment operators.

like image 146
takteek Avatar answered Oct 06 '22 00:10

takteek