c-如何使用按位运算符检查整数是偶数还是奇数
如何使用按位运算符检查整数是偶数还是奇数
8个解决方案
128 votes
考虑一下“位”中“偶数”和“奇数”的含义。 由于二进制整数数据的存储位指示2的倍数,因此最低位将对应于20(当然是1),而所有其他位将对应于2的倍数(21 = 2、22 = 4 等等。)。 免费ASCII艺术:
0)|||||| + -−-位1,值= 2(21)||||| +/- D-bit 2,值= 4(22)|||| +/- D-bit 3,值= 8(23)||| + ---------第4位,值= 16(24)|| + ---------位5,值= 32(25)| + ------------位6,值= 64(26)+--------第7位(最高位),无符号数字的值= 128(27), 值= -128(-27),用于带符号的数字(2的补码)
我只显示了8位,但您明白了。
因此,您可以通过仅查看最低位来判断整数是偶数还是奇数:如果已设置,则数字为奇数。 如果没有,那就是偶数。 您不必关心其他位,因为它们都表示2的倍数,因此它们不能使值成为奇数。
您看待该位的方式是使用语言的AND运算符。 在C和语法上从B语法衍生的许多其他语言中(是,B),该运算符为&。在BASIC中,通常为And。您取整数,并将其与1(这是只设置了最低位的数字) ),如果结果不等于0,则该位置1。
我故意不在这里提供代码,这不仅是因为我不知道您使用的是哪种语言,还因为您标记了“作业”这个问题。 :-)
T.J. Crowder answered -10-27T04:51:30Z
78 votes
使用C(以及大多数类似C的语言)
if (number & 1) {
// It's odd
}
Jim Blackler answered -10-27T04:50:27Z
20 votes
if (number & 1)
number is odd
else // (number & 1) == 0
number is even
例如,我们取整数25,这是奇数。在二进制25中为00011001
00000001 (00000001 is 1 in binary)
&
--------
00000001。请注意,最低有效位b0为1。
00011001
00000001 (00000001 is 1 in binary)
&
--------
00000001
T M answered -10-27T04:52:01Z
12 votes
只是吉姆回答的脚注。
在C#中,与C不同,按位AND返回结果数,因此您需要编写:
if ((number & 1) == 1) {
// It's odd
}
neontapir answered -10-27T04:52:32Z
8 votes
if(x & 1) // '&' is a bit-wise AND operator
printf("%d is ODD\n", x);
else
printf("%d is EVEN\n", x);
例子:
For 9:
9 -> 1 0 0 1
1 -> & 0 0 0 1
-------------------
result-> 0 0 0 1
所以9 AND 1给我们1,因为每个奇数的最右位是1。
For 14:
14 -> 1 1 1 0
1 -> & 0 0 0 1
------------------
result-> 0 0 0 0
所以14 AND 1给我们0,因为每个偶数的最右边的位是0。
Aditya Goel answered -10-27T04:53:06Z
1 votes
您只需使用按位AND &运算符即可完成此操作。
if(num & 1)
{
//I am odd number.
}
在这里-使用C中的按位运算符检查偶数
Pankaj Prakash answered -10-27T04:53:38Z
0 votes
同样在Java中,您将必须使用if((number&1)==1){//then odd},因为在Java和C#之类的语言中,int不会转换为boolean。您将必须使用关系运算符返回boolean值,即true和false,与C和类似C ++的语言不同,它将非零值视为true。
therahulkumar answered -10-27T04:54:06Z
0 votes
#include
#include
#include
void BitConvert(int num, std::vector &array){
while (num > 0){
array.push_back(num % 2);
num = num / 2;
}
}
void CheckEven(int num){
std::vector array;
BitConvert(num, array);
if (array[0] == 0)
std::cout << "Number is even";
else
std::cout << "Number is odd";
}
int main(){
int num;
std::cout << "Enter a number:";
std::cin >> num;
CheckEven(num);
std::cout << std::endl;
return 0;
}
Testing123 answered -10-27T04:54:26Z