/**
* Java得到一个整数的绝对值,不使用任何判断和比较语句,包括API. <br>
* 1、不得使用任何API,如Math.abs()等。<br>
* 2、不得使用判断语句,如if、for、while、switch、?:等。<br>
* 3、不得使用比较语句,如:==、 <=、>=、!=、 <、>等。 <br>
*
* @author JAVA世纪网(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 >>> 31)<<1));
}
}

================================

num>>>31 得到的是num的符号位。num为负则num>>>31=0;否则num>>>31=1;

(num>>>31) < <1 相当于将 num>>>31 乘以2.

1- ((num>>>31) < <1) 的作用是将 ((num>>>31) < <1)由0变为1,或者由1变为-1;

经过1- ((num>>>31) < <1) 的变换后,如果Num为负,则表达式的结果为-1;否则为1。

num* (1- ((num>>>31) < <1))的意思也就明确了……

Java得到一个整数的绝对值,不使用任何判断和比较语句,包括API.的更多相关文章

  1. 用java求一个整数各位数字之和

    /* * 用java求一个整数各位数字之和 */ public class Test02 { public static void main(String[] args) { System.out.p ...

  2. java位运算求一个整数的绝对值

    1 import java.util.Scanner; 2 3 public class Question1 { 4 public static void main(String[] args) { ...

  3. Java 输入一个整数,计算它各位上数字的和。(注意:是任意位的整数)

    import java.util.*; /* * 输入一个整数,计算它各位上数字的和. * (注意:是任意位的整数) */ public class Sum02 { public static voi ...

  4. JAVA输入一个整数,求出其所有质因数

    首先得求出能整除A的数,再判断I是否是质数!!! import java.util.*; public class aa { public static void main(String[] args ...

  5. java 获取一个整数的各个位数

    两种方法~  第一种是取模运算  第二种是使用char数组进行分割开依次存到数组[推荐第二种] 获取一个四位数的各个位数 int qian =input/1000; //千位除以1000       ...

  6. java输入一个整数N,打印1~n位数

    举个栗子:输入 3 : 打印1,2,3......999 这里要注意一个坑,不可以直接算出最大的数,然后从1开始打印 .因为当n足够大时,n位数必定会超出int范围和long范围 所以我们需要用字符串 ...

  7. Java 返回一个整数的各个数字之和的一种方法

    public static long sumDigits(long n){ long total=0; long number=n; while(number!=0){ total=total+num ...

  8. coding++: java把一个整数拆分为单个值

    方式一: int num = 100; int[] ary = new int[(num+"").length()]; for(int i = ary.length-1;i> ...

  9. Java之一个整数的二进制中1的个数

    这是今年某公司的面试题: 一般思路是:把整数n转换成二进制字符数组,然后一个一个数: private static int helper1(int i) { char[] chs = Integer. ...

随机推荐

  1. 开启glassfish安全管理允许远程访问das

    root@localhost:/opt/glassfish3/bin# ./asadmin enable-secure-admin remote failure: 至少有一个管理员用户的口令为空, 安 ...

  2. VSCODE 教程网

    http://geek-docs.com/vscode/vscode-tutorials/vs-code-text-selection.html

  3. C++ STL之集合set的使⽤

    写在最前面,本文摘录于柳生笔记: set是集合,一个set里面个元素各不相同的,而且set会按照元素从小到大的进行排序,一下是set的常用方法:

  4. 打开终端,提示 “无法加载文件C:\XXX\WindowsPowerShell\profile.ps1,因为在此系统上禁止运行脚本” 的错误

    解决步骤: 1. 以管理员身份运行PowerShell 2. 执行:get-ExecutionPolicy,回复Restricted,表示状态是禁止的 3.执行:set-ExecutionPolicy ...

  5. CentOS上安装elasticsearch

    1.安装docker yum install docker 2.启动docker systemctl start docker 查看docker版本: docker -v 之后只要启动机器就会自动开启 ...

  6. mvn无法下载fastdfs-client-java依赖解决办法

    1.下载fastdfs-client-java源码 https://github.com/happyfish100/fastdfs-client-java 2.修改pom.xml文件 添加打包插件 & ...

  7. 「JSOI2010」排名

    「JSOI2010」排名 传送门 看到先后顺序限制和字典序,很容易想到拓扑排序 + 贪心. 考虑具体做法: 对于第一问: 我们开一个大根堆来代替队列,然后从大到小构造出各个元素的排名. 我们连边 \( ...

  8. Mysql基本用法-01

    #登录数据库 mysql -hlocalhost -uroot -p; #修改密码 mysqladmin -uroot -pold password new; #显示数据库 show database ...

  9. python记录点

    python记录点 文件编码 Unicode使用最少2个字节(1个字节=1BYTE=8bit=一个长度为8的二进制数) 来表示字母和符号等,有时候是4个字节. UTF-8是对Unicode编码的压缩和 ...

  10. 使用git commit命令时会提示"Please tell me who you are"

    在命令行中输入 git config --global user.email "邮箱地址" git config --global user.name "用户名" ...