求一个整数是否可以被3整除
2016-03-13 15:25
127 查看
使用二进制方式验证,由于3的二进制位00000011,所以假设b=3*a;
那么b的二进制的最低位即为a的最低位,a的次低位加上最低位即为b的次低位,依次类推,
代码如下:
那么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; }
相关文章推荐
- javascript 函数
- Android Studio--EditText属性
- 写给独立开发兄弟共勉-寂寞是19首诗和2首悲歌
- C. Mail Stamps---cf29c(离散化,图)
- 自学android课程 Android 学习Activity(1)activity和intent
- Opencv Mat数据结构学习
- static修饰变量
- 关键字const的详解
- 3130: [Sdoi2013]费用流
- 第一次上机实验-2
- EF(Linq)框架使用过程中的小技巧汇总
- html标签整理
- 观察者模式
- 第二周学习进度条
- 复利计算器1.0
- lesson 01 Hello Sdl
- Linux 解决Sublime无法输入中文
- 神奇算式(ArrayList装载对象)
- c++的上机作业2
- Unity插件之NGUI学习(1)—— 环境搭建