检查整数是否是 8 的倍数

Check if integer is multiple of 8

本文关键字:整数 是否是 检查      更新时间:2023-10-16

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

使用 "modulo" 运算符,它给出除法的余数:

if (n % 8 == 0) {
    // n is a multiple of 8
}

使用"modulo"或"integer 余数运算符"%

int a = ....;
if (a % 8 == 0 ) {
  // a is amultiple of 8
}

使用运算符 %

if ( num % 8 == 0 )
{
    // num is multple of 8
}

只检查数字的最后 3 位就可以完成这项工作.
即使您以string的形式获得一个巨大的数字,其中%操作没有用,您也可以检查是否只有最后 3 位数字可以被 8 整除,那么整数可以被 8 整除。

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

我看到有人在使用位操作

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

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