Shift operators were always confusing for me. So I thought of revising old lessons like converting numbers to binary, shift operators, etc.. once again.
Converting integer to binary
These are one of the first lessons which I learned when I started learning computing. Even though computers use 32/64 bits for a integer, for ease I am using only 8 bits.
So in 8 bits, we can represent integers from
11111111) if they are unsigned. When it comes to signed integers its bit confusing, In 8 bits, we can represent
01111111) signed integers.ie., if the 8th bit is
1 its a negative number. In another way,
0-127 are positive and
128-255 are negative.
So how to convert a negative number into binary?
Lets our number be
-10, so the esiest way to find the binary
256 + (-10) 256 - 10 = 246
246 to binary, gives you
11110110. which is equalent binary for
Another way to find the binary of negative numbers is,
- Take the binary of postitive number
- Find 1’s compliment (inverting all 0’s to 1’s and 1’s to 0’s )
- Add 1 to it.
-10’s binary, first we find binary of
10, which is
10 converted to 00001010 1's compliment of 00001010 is 11110101 Add 1 to it : 11110101 + 1 = 11110110
So here I am gonna address 3 shift operators which revised recently, which are
>>(Signed right shift)
<<(Signed left shift)
>>>(Unsigned right shift)
>> (Signed right shift)
10 >> 1, here 10 is converted to binary as
00001010 and shit the bits 1 position to the right. Which results
00000101 equalant of 5 in decimal.
-10 >> 1, -10 is converted to binary as
11110110 and when shifts to 1 position to right it becomes
11111011 which is equalant to -5.
<< (Signed left shift)
10 << 1, here the difference is, it shift the bits 1 posision to its left. which results
00010100 equalant of 20 in decimal. On
-10, in the same way after shift it become
11101100 equalant to -20
>>> (Unsigned right shift)
10 >>> 1, here the processing of positive integers are same the
>> (right shift) but bit different for the negative numbers.
-10 >>> 1, the binary equalant of
11110110. now shift 1 postition to right, adding zero’s on left. which results
01111011 converting this to decimal (discarding sign) will result