Java Programming - Operators and Assignments - Discussion
Discussion Forum : Operators and Assignments - Pointing out the correct statements (Q.No. 3)
3.
Which two statements are equivalent?
- 16*4
- 16>>2
- 16/2^2
- 16>>>2
Answer: Option
Explanation:
(2) is correct. 16 >> 2 = 4
(4) is correct. 16 >>> 2 = 4
(1) is wrong. 16 * 4 = 64
(3) is wrong. 16/2 ^ 2 = 10
Discussion:
27 comments Page 1 of 3.
Asmat said:
1 decade ago
16>>2 signed right shift.
16>>>2 unsigned right shift.. the most significant bit in >> is sign bit, so that if the sign bit is 0, the number is positive and if the sign bit is 1 the number is negative.
Here since the number is already positive when we shift by >>, we get 100 and when we use >>> we get 0100, the 0 before 1 represents that its a positive number..Had this been -16, the answer would have been 100 for >> and 1100 for >>>.
16>>>2 unsigned right shift.. the most significant bit in >> is sign bit, so that if the sign bit is 0, the number is positive and if the sign bit is 1 the number is negative.
Here since the number is already positive when we shift by >>, we get 100 and when we use >>> we get 0100, the 0 before 1 represents that its a positive number..Had this been -16, the answer would have been 100 for >> and 1100 for >>>.
Khan said:
7 years ago
16>>2 signed right shift.
16>>>2 unsigned right shift. The most significant bit in >> is sign bit, so that if the sign bit is 0, the number is positive and if the sign bit is 1 the number is negative.
Here, since the number is already positive when we shift by >>, we get 100 and when we use >>> we get 0100, the 0 before 1 represents that its a positive number. Had this been -16, the answer would have been 100 for >> and 1100 for >>>.
16>>>2 unsigned right shift. The most significant bit in >> is sign bit, so that if the sign bit is 0, the number is positive and if the sign bit is 1 the number is negative.
Here, since the number is already positive when we shift by >>, we get 100 and when we use >>> we get 0100, the 0 before 1 represents that its a positive number. Had this been -16, the answer would have been 100 for >> and 1100 for >>>.
(1)
Jose Marti said:
1 decade ago
Because the unsigned right shift operator ">>>" shifts a ZERO into the leftmost position.
In binary 16 is 10000, now shift the bits two places to the right. We get 100. Then add a 0 into the leftmost position, we get 0100 which is 4.
In binary 16 is 10000, now shift the bits two places to the right. We get 100. Then add a 0 into the leftmost position, we get 0100 which is 4.
(2)
Anil said:
1 decade ago
In binary 16 is 10000, now shift the bits two places to the right (>>2)and we get 100 which is 4
In binary 16 is 10000, now shift the bits three places to the right (>>>2)and we get 10 which is 2
So how the 2 and 4 is correct?
In binary 16 is 10000, now shift the bits three places to the right (>>>2)and we get 10 which is 2
So how the 2 and 4 is correct?
Mukesh said:
1 decade ago
For 16>>2=4 is OK but still I am not getting how you did 16>>>2 =4.
What is the meaning of three >>> symbols. Two >> means bit-wise shifting. What is the meaning of X>>>y ?
What is the meaning of three >>> symbols. Two >> means bit-wise shifting. What is the meaning of X>>>y ?
Utpal Sharma said:
1 decade ago
In java >> and >>> both have same meaning right shift and 16/2^2 here first 16/2=8 and then 8^2 perform bitwise OR operation so 8 in binary 1000, 2 is 0010 output is 1010 which is 10.
(1)
Abhi said:
10 years ago
The >>> operator shifts the bits of expression 1 right by the number of bits specified in expression 2. Zeroes are filled in from the left. Digits shifted off the right are discarded.
Allauddin Pirjade said:
8 years ago
In simple words >>> always shifts a zero into the leftmost position whereas >> shifts based on sign of the number i.e. 1 for negative number and 0 for positive number.
Prajwal said:
10 years ago
This work in hexa-decimal format.
Ex: We have 16 >>> 2.
0000 0000 0001 0000 --> 16.
Then 16 shifted by 2.
0000 0000 0000 0100 --> 4.
Observe 1 is shifted by 2.
Ex: We have 16 >>> 2.
0000 0000 0001 0000 --> 16.
Then 16 shifted by 2.
0000 0000 0000 0100 --> 4.
Observe 1 is shifted by 2.
Mmintz01 said:
1 decade ago
16/2 equals 8 so in binary represents the number 1000 if you xor (8^2) this with 2 in binary meaning 0010 you have 1010 in binary which is 10 in decimal system.
Post your comments here:
Quick links
Quantitative Aptitude
Verbal (English)
Reasoning
Programming
Interview
Placement Papers