用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 2019-10-27T04:51:30Z

78 votes

使用C(以及大多数类似C的语言)

if (number & 1) {

// It's odd

}

Jim Blackler answered 2019-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 2019-10-27T04:52:01Z

12 votes

只是吉姆回答的脚注。

在C#中,与C不同,按位AND返回结果数,因此您需要编写:

if ((number & 1) == 1) {

// It's odd

}

neontapir answered 2019-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 2019-10-27T04:53:06Z

1 votes

您只需使用按位AND &运算符即可完成此操作。

if(num & 1)

{

//I am odd number.

}

在这里阅读更多-使用C中的按位运算符检查偶数

Pankaj Prakash answered 2019-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 2019-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 2019-10-27T04:54:26Z

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值