移位运算实际应用——判断整数N是否为2的阶次方
2010-03-17 14:45
267 查看
首先看一下2的n次方数表示成二进制的样子
上图看出n+1次方相对于n次方整个数向左移了1位 据此C语言实现如下:
#include "studio.h"
int main(){
int i=16;
int n;
printf("输入一个int类型整数:");
scanf("%d",&n);
if(n>1<<(i-1)){
printf("\n输入超出范围!!\n");
return0;
}
else{
for(i=0;i<16;i++){
if(n==1<<i){
printf("\n整数%d是2的%d次方!\n",n,i);
return1;
}
}
printf("整数%d不是2的阶次方。",n);
return0;
}
}
这个程序的问题如果一个数在移位的时候,恰好把超出int范围的数字丢弃剩下....1000.....,这个数也被判为是2的n次方。
不知道各位有没有更好的方法实现,能够使程序运行效率更高。
上图看出n+1次方相对于n次方整个数向左移了1位 据此C语言实现如下:
#include "studio.h"
int main(){
int i=16;
int n;
printf("输入一个int类型整数:");
scanf("%d",&n);
if(n>1<<(i-1)){
printf("\n输入超出范围!!\n");
return0;
}
else{
for(i=0;i<16;i++){
if(n==1<<i){
printf("\n整数%d是2的%d次方!\n",n,i);
return1;
}
}
printf("整数%d不是2的阶次方。",n);
return0;
}
}
这个程序的问题如果一个数在移位的时候,恰好把超出int范围的数字丢弃剩下....1000.....,这个数也被判为是2的n次方。
不知道各位有没有更好的方法实现,能够使程序运行效率更高。
相关文章推荐
- 判断一个整数是否是2的n次方
- 位运算——判断整数a是否为2的正整数幂?
- 判断一个整数x是否是2的N次方。
- 【C#】一个方法判断整数是否是2的N次方
- JAVA--第十周作业编写之一个Teacher类负责给出算术题目,随机给出两个整数并进行运算,并判断回答者的答案是否正确;编写一个GUI类ComputerFrame,回答者可以通过GUI看到题目并给出
- 判断某个整数是否为2的次方数
- 判断n是否为a的x次方(n, a, x都为正整数)
- 判断一个整数是否是2的N次方【转载】
- Jquery实际应用,判断radio,selelct,checkbox是否选中及选中的值
- 对于一个整数矩阵,存在一种运算,对矩阵中任意元素加一时,需要其相邻(上下左右)某一个元素也加一, 现给出一正数矩阵,判断其是否能够由一个全零矩阵经过上述运算得到。
- LeetCode - 231. Power of Two - 判断一个数是否2的n次幂 - 位运算应用实例 - ( C++ )
- 判断一个整数是否是n^m次方类型数据,并比较乘法和除法性能差异
- 判断一个整数是否是2的阶次方数
- 对于一个整数矩阵,存在一种运算,对矩阵中任意元素加一时,需要其相邻(上下左右)某一个元素也加一, 现给出一正数矩阵,判断其是否能够由一个全零矩阵经过上述运算得到。
- Jquery实际应用,判断radio,selelct,checkbox是否选中及选中的值
- 判断一个存放整数序列的单链表是否对称——栈的应用
- Jquery实际应用,判断radio,selelct,checkbox是否选中及选中的值
- Jquery实际应用,判断radio,selelct,checkbox是否选中及选中的值
- offer题11 数值的整数次方&判断浮点型是否相等&降低求n次方的时间复杂度&3种错误处理方式
- Jquery实际应用,判断radio,selelct,checkbox是否选中及选中的值