+ 2
Need a little help in bitwise operators.
What does the following statement do? x=x|1<<n; Can anyone explain? Answer to this question is Sets (n+1)th bit of x why??? how??
3 ответов
+ 12
It's value depends on x and n. Precedence states it executes as follows:
x=(x|(1<<n));
so 1 is left shifted n bits, the result is ored with x, which is finally stored in x.
+ 15
Expanding on what John said, the expression shifts the positions of the binary bits n times to the left.
Using the reference below we see the first five binary bit positions read right to left:
   16 | 8 | 4 | 2 | 1
Note the equivalent integer to binary conversions below:
  1 => 00001 [ 0 + 0 + 0 + 0 + 1 ]
  2 => 00010 [ 0 + 0 + 0 + 2 + 0 ]
  3 => 00011 [ 0 + 0 + 0 + 2 + 1 ]
  4 => 00100 [ 0 + 0 + 4 + 0 + 0 ]
  5 => 00101 [ 0 + 0 + 4 + 0 + 1 ]
  6 => 00110 [ 0 + 0 + 4 + 2 + 0 ]
  7 => 00111 [ 0 + 0 + 4 + 2 + 1 ]
  8 => 01000 [ 0 + 8 + 0 + 0 + 0 ]
  9 => 01001 [ 0 + 8 + 0 + 0 + 1 ]
10 => 01010 [ 0 + 8 + 0 + 2 + 0 ]
11 => 01011 [ 0 + 8 + 0 + 2 + 1 ]
12 => 01100 [ 0 + 8 + 4 + 0 + 0 ]
Shifting bits involve moving the 1's from current bit positions by the specified number in the specified direction.
Examples:
-------------------------------------------------
Shifting 1 bit to the left.
-------------------------------------------------
1)         1 << 1
    00001 => 00010
             1 => 2
2)         2 << 1
    00010 => 00100
             2 => 4
3)         3 << 1
    00100 => 01000
             3 => 8
4)         4 << 1
    01000 => 10000
             4 => 16
-------------------------------------------------
Shifting 2 bits to the left.
-------------------------------------------------
5)         1 << 2
    00001 => 00100
             1 => 4
6)         2 << 2
    00010 => 01000
             2 => 8
7)         3 << 2
    00011 => 01100
             3 => 12
8)         4 << 2
    00100 => 10000
             4 => 16
-------------------------------------------------
Shifting 3 bits to the left.
-------------------------------------------------
9)         1 << 3
    00001 => 01000
             1 => 8
10)       2 << 3
    00010 => 10000
             2 => 16
I hope this makes sense. Cheers!
+ 4
@David , 👏 , I better copy this post thread , it's not gonna be better than this , for the new ones



