目录
suibi

js判断奇偶数的方法(分享编程奇偶数的判断代码)


前两天翻译了一篇文章,如何找到数组里面的唯一数字 – 码中人 ,发现按位运算可以做很多事,包括可以很便捷地判断数的奇偶。

原文:
https://www.geeksforgeeks.org/check-if-a-number-is-odd-or-even-using-bitwise-operators/翻译:码中人

给定一个数 N,使用位运算符检查该数是偶数还是奇数。如:

输入: N = 11
输出: Odd(奇数)
输入: N = 14
输出: Even (偶数)

方法1:按位异或

按位异或是指参与运算的两个值,如果两个相应位相同,则结果为0,否则为1。即:0^0=0, 1^0=1, 0^1=1, 1^1=0

这个方法是用二进制数0001对数字的二进制最后一位进行处理。如果数字是偶数,数字异或之后操作会增加1,否则,数值会减少1。

所以代码如下:

看看结果 :

纳尼?怎么回事。

这里涉及运算符的优先级问题,因为相等运算符(==)的优先级比按位异或(^)要高。所以:

n ^ 1 == n + 1

相当于:

n^(1 == n+1)

即:

11为整数,为真。所以会出现11为偶数的错误。

应用分组修改优先级,正确应为:

运算符优先级 – JavaScript | MDN

方法2:按位与

按位与操作符用和号( &)表示,有两个操作数。本质上,按位与就是将两个数的每一个位对齐,然后基于真值表中的规则,对每一位执行相应的与操作。

规则为:1&1=1,1&0=0,0&1=0,0&0=0。

所以将数字与1相与,如果结果为1,即为奇数。如果为0,即为偶数。

方法3:按位或

按位或操作符用管道符( |)表示,规则为:1|1=1,1|0=1, 0|1=1 ,0|0=0。

同样将数值与1相或,得到的值如果比原来的数要大,即为偶数。数值不变即为奇数。

(完)


写笔记

咨询

您的电子邮箱地址不会被公开。