java位运算求一个整数的绝对值
1 import java.util.Scanner; 2 3 public class Question1 { 4 public static void main(String[] args) { 5 //从键盘得到一个值 6 Scanner sc = new Scanner(System.in); //声明一个标准输入扫描器 7 System.out.println("请输入一个整数:"); 8 int n = sc.nextInt(); //得到整数 9 sc.close(); //关闭扫描器 10 11 //调用转换为绝对值的函数 12 n=ToAbs(n); 13 System.out.println("绝对值为:" + n); 14 } 15 16 //取绝对值方法 17 //int类型存入是以二进制补码的形式在内存中,要取绝对值,只需要改变其符号位 18 public static int ToAbs(int n) { 19 int i = n >> 31; //int 为32位,右移31位得到符号位,赋值给i,若为正,则i==0;负,i==-1 20 return ((n ^ i) - i); //一个数^0==原数,数^-1==数的绝对值-1 ==》 绝对值=负数异或-1取反+1 21 } 22 } 23