8

嗨,我是 C++ 新手,所以我不确定这是否是一个非常愚蠢的问题。基本上我正在使用 c++ 自定义操作项目与我的 MSI 安装程序进行交互。我得到一个我的用户将输入的属性,它是一个整数。我需要确保这是 8 的倍数,我不知道该怎么做。显然,如果它可以除以 8,它是一个倍数,但我不确定如果有余数如何捕捉。任何帮助将不胜感激,甚至可以为我指明正确的方向。谢谢

4

6 回答 6

20

使用“模”运算符,它给出除法的余数:

if (n % 8 == 0) {
    // n is a multiple of 8
}
于 2012-09-20T10:14:14.227 回答
5

使用“模”或“整数余数运算符” %

int a = ....;
if (a % 8 == 0 ) {
  // a is amultiple of 8
}
于 2012-09-20T10:14:33.587 回答
3

使用运算符 %

if ( num % 8 == 0 )
{
    // num is multple of 8
}
于 2012-09-20T10:17:03.557 回答
1

只检查3数字的最后一位就可以了。
即使您以 a 的形式给出了一个巨大的数字,string其中%操作没有用,您也可以检查是否只有最后 3 位数字可以被 8 整除,那么整个数字是否可以被 整除8

于 2020-11-03T18:04:59.343 回答
1

对于无符号整数,三个最低有效位对于 8 的倍数始终为零,因此这些位上的按位 & 应该为假。对于有符号(二进制补码),这仅在整数为正时才成立,因此请注意您的输入是否存储为有符号(您是否希望接受负数作为输入)。另请注意,零本身的三个最低有效位为零,因此请考虑当有人输入零时您是否希望您的检查为真。从您的问题来看,您的代码似乎不需要优化,所以只需使用模数。

于 2022-02-21T04:39:57.330 回答
0

我看到有人在使用位操作

bool f( int x){
return !(x & 7);
}

据说这种方法有一些问题,但我不太确定。

于 2013-11-04T19:10:45.637 回答