如何通过位运算判断一个整数是否为奇数?
- 内容介绍
- 文章标签
- 相关推荐
本文共计530个文字,预计阅读时间需要3分钟。
位运算在计算机学习中常用于计算,但其实际应用目的我们难以知晓。下文笔者的实验验证了使用位运算的几种奇数方法,如下所示:
1. 判断一个数是否为奇数: - 方法一:将数与1进行位与运算,结果为1则为奇数。 - 方法二:将数减去1后,右移一位,结果为1则为奇数。
例如,验证一个数是否为奇数:pythondef is_odd(num): return (num & 1)==1 or ((num - 1) >> 1)==1
测试print(is_odd(5)) # 输出:Trueprint(is_odd(4)) # 输出:False
位运算是我们学习计算机时,常面对的计算,但是他的实际用途,我们无法知晓,下文笔者将讲述使用位运算的方式验证奇数,偶数的方法,如下所示:
下文是笔者验证一个数是否为奇数的方法
实现原理:
1.当一个数为正数时,其奇数二进制位的最后一位必须为1,采用这种对数进行验证
2.当一个数为负数时,先将其转换为绝对值(~a+1),然后再对其进行验证
/*
* 判断一个数 还是奇数,还是偶数(0也作为偶数)
* */
public class CheckDataOddNumber {
public static void main(String[] args) {
int times = 1000000; // 测试次数
boolean checkFlag = true;
for (int i = 0; i < times; i++) {
int a = 0;
boolean b1 = isOddNumber1(a);
boolean b2 = isOddNumber2(a);
if (b1 != b2) {
checkFlag = false;
}
// System.out.println(b1);
// System.out.println(b2);
}
if (!checkFlag) {
System.out.println("=======wrong!======");
} else {
System.out.println("=====good!======");
}
}
/*
* 是否为奇数
*/
private static boolean isOddNumber1(int a) {
// 是奇数
boolean flag = true;
if (a % 2 == 0) {
flag = false;// 偶数
}
return flag;
}
/*
* 是否为奇数 采用位运算的方式
*/
private static boolean isOddNumber2(int a) {
// 是奇数
boolean flag = true;
flag = ((((~a) + 1) & a) == 1);
return flag;
}
本文共计530个文字,预计阅读时间需要3分钟。
位运算在计算机学习中常用于计算,但其实际应用目的我们难以知晓。下文笔者的实验验证了使用位运算的几种奇数方法,如下所示:
1. 判断一个数是否为奇数: - 方法一:将数与1进行位与运算,结果为1则为奇数。 - 方法二:将数减去1后,右移一位,结果为1则为奇数。
例如,验证一个数是否为奇数:pythondef is_odd(num): return (num & 1)==1 or ((num - 1) >> 1)==1
测试print(is_odd(5)) # 输出:Trueprint(is_odd(4)) # 输出:False
位运算是我们学习计算机时,常面对的计算,但是他的实际用途,我们无法知晓,下文笔者将讲述使用位运算的方式验证奇数,偶数的方法,如下所示:
下文是笔者验证一个数是否为奇数的方法
实现原理:
1.当一个数为正数时,其奇数二进制位的最后一位必须为1,采用这种对数进行验证
2.当一个数为负数时,先将其转换为绝对值(~a+1),然后再对其进行验证
/*
* 判断一个数 还是奇数,还是偶数(0也作为偶数)
* */
public class CheckDataOddNumber {
public static void main(String[] args) {
int times = 1000000; // 测试次数
boolean checkFlag = true;
for (int i = 0; i < times; i++) {
int a = 0;
boolean b1 = isOddNumber1(a);
boolean b2 = isOddNumber2(a);
if (b1 != b2) {
checkFlag = false;
}
// System.out.println(b1);
// System.out.println(b2);
}
if (!checkFlag) {
System.out.println("=======wrong!======");
} else {
System.out.println("=====good!======");
}
}
/*
* 是否为奇数
*/
private static boolean isOddNumber1(int a) {
// 是奇数
boolean flag = true;
if (a % 2 == 0) {
flag = false;// 偶数
}
return flag;
}
/*
* 是否为奇数 采用位运算的方式
*/
private static boolean isOddNumber2(int a) {
// 是奇数
boolean flag = true;
flag = ((((~a) + 1) & a) == 1);
return flag;
}

