Java shift operator Details

Source: Internet
Author: User

The Java shift operators are all about these three kinds of:<< (left shift), >> (with symbols right) and >>> (unsigned Right shift).

1. Left shift operatorThe left shift operator << causes all bits of the specified value to shift to the left of the prescribed number of times.
1) Its general format is as follows:
value << num
num Specifies the number of bits to shift the value to move.
left-shift rule only remembers one point: Discard the highest bit (the sign bit is also discarded), 0 the minimum bit
if the number of bits moved exceeds the maximum number of digits of the type, the compiler will model the number of bits moved. If you move 33 bits to the int type, you actually move only 332 = 1 bits.

2) Arithmetic rules
In binary form, all numbers are shifted to the left by the corresponding number of digits, the high position is removed (discarded), and the low vacancy is 0.
When the left-hand operand is of type int, the 31st bit of each 1-bit shift is moved out and discarded;
When the left-hand operand is a long type, the 63rd bit of each 1-bit move is moved out and discarded.
When the left-hand operand is byte and short, these types are automatically expanded to be of type int.

3) Mathematical significance
On the premise that the number is not overflow, for positive and negative numbers, the left one is the equivalent of multiplying by 2 by 1, and the left shift n is the equivalent of multiplying by 2 of the n-th square

4) Calculation process:
Example: 3 <<2 (3 for int type)
1) Convert 3 to binary number 0000 0000 0000 0000 0000 0000 0011,
2) Move the digit high (left) to two 0, and the other numbers are shifted to the left by 2 bits
3) Two vacancies in the low (right) 0. The resulting result is 0000 0000 0000 0000 0000 0000 0000 1100,
Conversion to decimal is 12.

The number of bits moved exceeds the maximum number of digits of the type,
If you move into a higher-order bit (31 or 63 bits), the value becomes negative. The following procedure illustrates this point:

//left shifting as a quick-to-multiply by 2.
public class Multbytwo {
public static void Main (String args[]) {
     int i;
     int num = 0xFFFFFFE;
     for (i=0; i<4; i) {
             num = num << 1;
         system.out.println (num);
     }
   }
}

The output of the program is as follows:

536870908
1073741816
2147483632
-32
Note: n-bit binary, the highest bit is the sign bit, so the value range represented by -2^ (n-1) ~2^ (n-1)-1, so the modulo is 2^ (n-1).

2. Right shift operatorRight-shift operator << causes all bits of the specified value to move to the right by the required number of times.
1) Its general format is as follows:
value >> num
num Specifies the number of bits to shift the value to move.
The rule that moves right only remembers one point: the symbol bit is unchanged, the left side is the symbol bit

2) Operational rules:
In binary form, all numbers are shifted to the right by the corresponding number of digits, the lower position is removed (discarded), the high position of the empty fill sign bit, that is, positive 0, negative complement 1
These types are automatically expanded to int when the operands to the right move are of byte and short type.
For example, if the value to be removed is negative, each right shift is 1 on the left, and if the value to be moved is a positive number, each right shift is 0 on the left, which is called sign bit extension (reserved sign bit) (sign extension), in the right shift

The symbol used to hold negative numbers during operation.


3) Mathematical significance
Move right one is equivalent to 2, and the right shift n is the equivalent of dividing by 2 of the n-th side.

4) Calculation process
One >>2 (11 for int type)
1) 11 in binary form: 0000 0000 0000 0000 0000 0000 0000 1011
2) Move the last two digits of the low position out, since the number is positive, so it is 0 at the high.
3) The final result is 0000 0000 0000 0000 0000 0000 0000 0010.
Conversion to decimal is 3.

>> 2 (35 for INT type)
35 conversion to binary: 0000 0000 0000 0000 0000 0000 0010 0011
Move the last two digits of the low: 0000 0000 0000 0000 0000 0000 0000 1000
Convert to decimal: 8

3, unsigned Right shiftunsigned Right shift operator >>>
its general format is as follows:
value >>> num
num Specifies the number of bits to shift the value to move.
Unsigned right-shift rule remembers only one point: the symbol bit extension is ignored, and the top bit of the 0 complement
The unsigned Right shift operator >>> is only meaningful for 32-bit and 64-bit values

Java shift operator Details

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.