700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 用c语言表示整数不是偶数 c-如何使用按位运算符检查整数是偶数还是奇数

用c语言表示整数不是偶数 c-如何使用按位运算符检查整数是偶数还是奇数

时间:2022-05-10 10:40:29

相关推荐

用c语言表示整数不是偶数 c-如何使用按位运算符检查整数是偶数还是奇数

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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。