Hello,大家好!我是老丑。今天给大家分享的是关于“int数值如何判断奇数偶数”的知识。
本文阅读预计6分钟。
大家如果不知道int是啥东东的话,可以阅读Java有哪些基本类型?进行了解。
OK,int是Java八大基本类型中的一个,4字节,32位。
接下来,我们进入正题。
目录
-
奇数偶数如何界定
-
偶数
-
奇数
-
判断方法S
-
常规方法
-
常规方法-简化
-
位运算
-
位运算-Two
-
位运算-Three
-
最后
-
学习推荐
奇数偶数如何界定
首先,我们得知道,奇数偶数如何界定,请看:
偶数
-
定义1:在整数中,能被2整除的数,叫做偶数。 -
定义2:二的倍数叫做偶数。
奇数
-
定义:在整数中,不能被2整除的数叫做奇数
判断方法S
我们先定义一个类型枚举,主要是用来代表我们的类型(偶数,奇数)。
类型枚举 :
package cn.laochou.judge;
public enum IntEnums {
// Even 代表偶数
Even(0, "偶数"),
// Odd 代表奇数
Odd(1, "奇数");
private final int code;
private final String message;
IntEnums(int code, String message) {
this.code = code;
this.message = message;
}
public int getCode() {
return code;
}
public String getMessage() {
return message;
}
}
常规方法
public IntEnums regularWay(int number) {
if(number % 2 == 0) {
return IntEnums.Even;
}else {
return IntEnums.Odd;
}
}
number % 2 == 0
这条语句中的 %
代表整除取余数。
这个方法固然是可以达到我们的目的,而且非常易读,但是我们可以进行简化一下。
常规方法-简化
public IntEnums regularWaySimplify(int number) {
return number % 2 == 0 ? IntEnums.Even : IntEnums.Odd;
}
OK,大家可以看到,这里只用了一条语句来作为方法主体,当然这个是可以达到我们的目的的。
这里使用到了一个运算符—— 三目运算符
三目运算符的定义:
表达式b ? x : y,先计算条件b,然后进行判断。如果b的值为true,计算x的值,运算结果为x的值;否则,计算y的值,运算结果为y的值。【百度百科】
对于 number % 2 == 0 ? IntEnums.Even : IntEnums.Odd
进行解释的话,就是先判断number % 2 == 0
的值,如果条件满足的话,那么就得到 IntEnums.Even
,否则就得到 IntEnums.Odd
。就是这样实现的。
位运算
实际上,以上两种方法都可以达到目的,但是我们也可以通过位运算来实现我们的需求。
public static IntEnums bitOperationWay(int number) {
return (number & 1) == 0 ? IntEnums.Even : IntEnums.Odd;
}
在这里使用了与运算。大家如果不知道与运算的话,我就举个列子。
不过位运算是建立在二进制的基础上的,因此我们需要将数值转为二进制。
5 的 二进制 101,1 的 二进制 1 但是是这样对齐的 int 的数值是 32 bit
1->32位
00000000000000000000000000000101
||||||||||||||||||||||||||||||||
00000000000000000000000000000001
上面便是它们之间对应
& 运算逻辑是:0 & 0 = 0
,0 & 1 = 0
, 1 & 0 = 0
,1 & 1 = 1
也就是说,两个二进制位上同时为1,最后得到的才是1 。
数值的最后一位二进制位是1的话,一定是奇数,因为之后的二进制位所能得到的都是偶数,只有最后一位进制位为1的话,才能造成奇数——> 偶数+1=奇数。
位运算-Two
难道只有与运算才能实现我们的需求吗?其实不然,还有一种位运算也可以。请看
public static IntEnums bitOperationWay2(int number) {
return (number << 31) == 0 ? IntEnums.Even : IntEnums.Odd;
}
这个实现方案也是可行的,大家如果不行,可以一试。
大家可以想一想,假设是偶数的话,那么最后一位一定是0,那么左移的31位的话,这个0值就刚好放到了第一位。
位运算-Three
再介绍一种通过位运算来达到我们目的的方式。
public static IntEnums bitOperationWay3(int number) {
return ((number >> 1) << 1) == number ? IntEnums.Even : IntEnums.Odd;
}
这里就很巧妙了啊,大家注意((number >> 1)
<< 1)
加粗的这里,左移的话,最后一位二进制位会 补0。
不知道大家有没有Get到我的意思,就是最后一位二进制位为0,这就保证是偶数。
最后
OK,整个推文到这里就基本结束了。
希望小伙伴们看完推文,能够有所收获。
学习路上有FingerDance,不孤单。欢迎加群——进入公众号,菜单栏【关于我们】->【加入我们】!
觉得推文写得还不错的小伙伴,还请点赞、关注、转发支持下。
我是老丑,一位又老又丑的少年!我们下期见。
学习推荐
我们是FingerDance,欢迎加入我们!
原文始发于微信公众号(FingerDance):Int数值判断奇偶的方式你真的全部知道吗
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/26670.html