/**
* Java gets the absolute value of an integer without using any judgment and comparison statements, including the API. <br>
* 1, do not use any API, such as Math.Abs (). <br>
* 2. Do not use judgment statements, such as if, for, while, switch,? such as <br>
* 3, do not use comparison statements, such as: = =, <=, >=,! =, <, > and so on. <br>
*
* @author java Century web (java2000.net, laozizhu.com)
*/
public class Test {
public static void Main (string[] args) {
for (int i =-5; I <= 5; i++) {
SYSTEM.OUT.PRINTLN (ABS (i));
}
}
public static int abs (int num) {
Return num * (1-(num >>> <<1));
}
}
================================
Num>>>31 gets the sign bit for Num. num is negative or num>>>31=0; otherwise num>>>31=1;
(num>>>31) < <1 equivalent to multiplying num>>>31 by 2.
The role of 1-((num>>>31) < <1) is to change ((num>>>31) < <1) from 0 to 1, or 1 to 1;
After the transform of num>>>31 < <1, if NUM is negative, the result of the expression is-1; otherwise 1.
The meaning of num* (1-((num>>>31) < <1) is clear ...
Java gets the absolute value of an integer without using any judgment and comparison statements, including the API.