Java shift operator and shift operator
1. Problem background
The result of the following code is:
A, 0 B, 16
C, 32 D, 64
/** * */package com.you.model;/** * @author Administrator * */public class Right {/** * @param args */public static void main(String[] args) {int number = 32;int subNum = number >> 32;System.out.println(subNum);}}
2. Problem Analysis
The parameter on the right of the shift operator needs to first perform the modulo 32 operation, and the eight bits in the binary are a loop. number> 32 is equivalent to number> 0, so the output is: 32
3. Problem result
32
Java shift operator Problems
(1) 100 1100 0000 1010> 2 ----- 1111 0011 0000
Signed displacement. The highest bit (number of parentheses) is the 1, 1 of the sign bit, which represents a negative number. A New Sign 1 is generated after the right shift,
That is, use 1 to add the highest bit.
1 (1) 10 0110 0000 0101 shifted right one bit
11 (1) 1 0011 0000 0010 shifted to the right two places
1100 1100 0000 1010> 2 ----- 0011 0011 0000
Unsigned displacement. That is, use 0 to add the highest bit.
0 (1) 10 0110 0000 0101
00 (1) 1 0011 0000 0010
Java shift operator Problems
-10 original code 10000000 00000000 00000000 00001010
-10 anti-code 11111111 11111111 11111111 11110101
-10 fill code 11111111 11111111 11111111 11110110 (that is, the expression of-10 in the computer)
The last shift is 01111111 11111111 11111111 11111011 = 2147483643.
Yeah, you see the 01111111 11111111 11111111 11111011 in the last line of my above step is changed to 10 hexadecimal, that is, 2147483643.