您的位置:首页 > 其它

求一个整数是否可以被3整除

2016-03-13 15:25 127 查看
使用二进制方式验证,由于3的二进制位00000011,所以假设b=3*a;

那么b的二进制的最低位即为a的最低位,a的次低位加上最低位即为b的次低位,依次类推,

1 1 0 0
1 1
1 1 0 0
1 1 0 0
1 0 0 1 0 0


代码如下:

bool IsTimesOf3(int data, int* result){
int num = data < 0 ? -data : data;
int lastBit = 0;
int times = 0;
while(num > 0){   //若结果大于零则一直进行运算,3倍数最终会等于0,不是3倍数最终会小于0
lastBit = num & 1;
num = (num >> 1) - lastBit;
*result |= (lastBit << times);
times++;
}
if (num != 0)
{
*result = 0;
}
return num == 0 ? true : false;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: