判断一个无符号整数是不是2的n次幂的幂
C版本:
#include<stdio.h>
unsigned int f2(int n);
//判断无符号整数d是不是[2的n次幂]的幂,并指出该数[d]是[2的n次幂]的多少(e)次幂
//原理:2的n次幂的幂的二进制位中有且只有一位是1,且1后面刚好是n个0为一组
int IsPowerof2Power(unsigned int d, int n, int *e)
{
int i = sizeof(d) << 3; //这里i得到d所占的位数(bits),因为要对d的每一位作判断
unsigned int v;
while(i > 0)
{
v = f2(n) & d; //取得d的最后n位
d >>= n;
if(v == 1)
{
if(d == 0)
{
*e = (int)((sizeof(d) << 3) - i) / n;
return 1; //是2^n的幂
}
else
return 0; //不是2^n的幂
}
else if(v == 0)
i -= n;
else
break;
}
return 0;
}
unsigned int f2(int n) //求2^n-1
{
unsigned d = 1;
d <<= n;
d -= 1;
return d;
}
void main()
{
unsigned int i = 2; //1是任何非零数的0次幂
int n, e, n2;
printf("此程序用来判断某个无符号整数是不是2的n次幂的幂,请输入n(大于0): ");
scanf("%d", &n);
while(i < 999999999) //4294967296 = 2^32
{
if((n > 0) && IsPowerof2Power(i, n, &e))
{
n2 = 1 << n;
printf("%d is %d's Power, %d = %d^%d/n", i, n2, i, n2, e);
}
i += 2;
}
}
判断一个无符号整数是不是2的n次幂的幂相关推荐
- 判断一个无符号整数是不是2的幂
C版本: #include<stdio.h> //原理:2的幂的二进制位中有且只有一位是1 int Is2Power(unsigned int d) { int i = sizeof(d ...
- c++输入一个整数判断是否为完全平方数_matlab判断一个整数是完全平方数
(C语言c++)判断一个数是否是 完全平方数的 整数倍 #include#includeint ispow(int x){ int& 用c编判断一个数是否是完全数 #include#in ...
- linux判断是否能上网_母亲提醒女儿:判断一个男人是否值得嫁,从这两点就能轻易看出...
没有哪个母亲不希望自己的女儿能够在长大之后嫁给一个出色的男人. 当然,这样的男人不需要有太多的钱或者出色的外貌,但必须得具备一定的人品. 我的一个朋友今年26岁,已经到了适婚年龄的她渴望着嫁给一个好男 ...
- python怎样判断一个文件是否存在_python如何判断一个文件是否存在
python如何判断一个文件是否存在 发布时间:2020-09-23 11:38:42 来源:亿速云 阅读:82 作者:Leah python如何判断一个文件是否存在?针对这个问题,这篇文章详细介绍了 ...
- 判断一个IP区间(或IP)是否被另一个IP区间所包含
以下方法实现判断一个IP是否被一个IP区间所包含 有一些静态方法可能引用了同名空间的自定义的类, 至于合并两个相临的IP段,可对其中的最大或最小IP+1 using System; using Sys ...
- python任意输入一个正整数、判断该数是否为素数_Python编程判断一个正整数是否为素数的方法,python素数...
Python编程判断一个正整数是否为素数的方法,python素数 本文实例讲述了Python编程判断一个正整数是否为素数的方法.分享给大家供大家参考,具体如下: import string impor ...
- 用C语言编写:判断一个≥2的整型数是否存在于斐波那契数列中?
自己写的,感觉挺有成就感的,就展示出来吧! 判断一个≥2的整型数是否存在于斐波那契数列中? 若存在,则返回第几项:若不在,则返回-1 #include <stdio.h> long gen ...
- 如何判断一个元素在亿级数据中是否存在?
本文转载于公众号:crossoverJie 前言 最近有朋友问我这么一个面试题目: 现在有一个非常庞大的数据,假设全是 int 类型.现在我给你一个数,你需要告诉我它是否存在其中(尽量高效). 需求其 ...
- 如何去判断一个面试者的深度学习水平?
点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 编辑:Amusi | 来源:知乎 https://www.zhi ...
最新文章
- 码书:入门中文NLP必备干货:5分钟看懂“结巴”分词(Jieba)
- Arduino可穿戴教程之第一个程序——选择端口(三)
- Java程序员必看!2021Java大厂面试知识分享
- 2019.03.21 增删改
- 2.0 STL泛型编程
- 清华大学《操作系统》(十一):处理机调度
- Vue项目启动后Error: Cannot find module ‘xxx’的解决方法
- python typing typescript_typescript
- JavaWeb — session+Cookie
- ECSHOP商品描述和文章里不加水印,只在商品图片和商品相册加水印
- mysql 新增字段 添加字段 删除字段 修改字段 级联删除 级联更新 等
- 【EOS】1.环境搭建
- 全网最全讲解最详细的PS教程(第一期:基础教程1.0)
- spss基本总结——聚类分析
- GPU共享内存小结---pycuda
- jQuery弹幕插件
- linux将目录打包压缩,linux 文件夹打包、解压命令大全
- python+Anaconda3+pycharm完整的下载安装过程及配置过程
- EditPlus 格式化 Unicode,编辑properties
- word-解决复制相同的word内容,显示行间距差别大的原因
热门文章
- 过程重要,还是结果重要?
- 系统集成资质 -考点分析- “三点估算法”出题的形式演化分析
- win与linux渊源,微软与Linux从对立走向合作,WSL是如何诞生的
- golang key map 所有_Map的底层实现 为什么遍历Map总是乱序的
- 1854. 人口最多的年份
- 数据挖掘—BP神经网络(Java实现)
- 如何在JavaScript中区分深层副本和浅层副本
- DevExpress WinForms使用教程:图表控件 - 内置深入查询
- [Swift通天遁地]一、超级工具-(2)制作美观大方的环形进度条
- 【转】java中定义二维数组的几种写法