Domanda

I am learning bitwise operations and cannot figure out how 305419896 bitshifted right by 28 equals 1? Can someone explain this?

È stato utile?

Soluzione

305419896 represented in binary is 1001000110100010101100111100 (thats 29 bits). If we take that value and shift all the bits right 28 places, we end up with just 1 (in binary and decimal).

Altri suggerimenti

You can think of >> n as a truncated division by 2^n.

305419896 / 2^28 -> 305419896 / 268435456 -> 1.1377777755260468

The decimal part is dropped, leaving you with 1.

Of course, as andars said, the computer does this by bit shifting.
Read this question for a good understanding.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top