1基础
2交换两个变量值
详见 文章 Java–交换两数的值
3求绝对值
//用位运算符求一个整数(int型)的绝对值
public class Test {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("请输入一个数:");
int num = input.nextInt();
//方法一:通过负数求反加1求
int result1 = num >=0 ? num : ~num + 1;
System.out.println("法一:此数的绝对值是:" + result1);
//方法二:通过位运算求
int temp = num >> 31;
int result2 = (num ^ temp) - temp;
System.out.print("法二:此数的绝对值是:" + result2);
}
}
4求某一十进制数是否是2的正数次幂
//给出任意一个int 类型的正整数,如何快速判断该整数的值,是否是2的整数次幂?(考虑位运算符)
public class Test {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("请输入一个数:");
int num = input.nextInt();
/*
//输入的数用二进制来表示,若只有1个1,其余位全部为0,则是 2 的整数次幂,反之,则不是。
//比如 8 = 1000 ,8&7 为 1000 & 0111 = 0000 ,是 2 的整数次幂。
//与 二进制的 满2进1 有关
if ((int)(num & (num - 1) )== 0)
System.out.print("您输入的数是2的整数次幂");
else
System.out.print("您输入的数不是2的整数次幂");
*/
//不采用位运算
boolean flag = true;
while (num != 1)
if (num % 2 != 0) {
flag = false;
System.out.print("您输入的数不是2的整数次幂");
break;
}
else
num /= 2;
if (flag)
System.out.print("您输入的数是2的整数次幂");
}
}
5求某一十进制数的补码中包含的1的个数
//一个十进制整数(int型)的二进制表示形式(补码)中,包含的1个数?
public class Test {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("请输入一个数:");
int num = input.nextInt();
int count = 0;
for (int i = 0;i < 8;i ++) //8表示二进制的位数,可以设置成8,16,32,64等,结果也相应的不同。
if ((num >>> i & 1) == 1)
count ++;
System.out.print(num + "的二进制补码形式中1的个数有 " + count + " 个。");
}
}