当前位置: 首页 > article >正文

C语言用按位与判断一个数是否是2的幂次方

一个数是2的幂次方时,其二进制表示中只有一个位是1,其余位都是0。
可以通过位运算来判断,
‌与运算‌:将该数与该数减1的结果进行与运算(x & (x - 1)),如果结果为0,则该数是2的幂次方;否则不是‌;

int isPowerOfTwo(int );
......
void CMcView::OnDraw(CDC* pDC)
{
	CMcDoc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);
	// TODO: add draw code for native data here
	CString str1;
	int n1=32, n2=45, n3=128, n4=105;

	if (isPowerOfTwo(n1)) {
		str1.Format("%d 是2的幂次方;", n1);
    } else {
        str1.Format("%d 不是2的幂次方;", n1);
    }
	pDC->TextOut(30, 30, str1);

	if (isPowerOfTwo(n2)) {
		str1.Format("%d 是2的幂次方;", n2);
    } else {
        str1.Format("%d 不是2的幂次方;", n2);
    }
	pDC->

http://www.kler.cn/a/404502.html

相关文章:

  • 键盘上打出反引号符号(´),即单个上标的撇号(这个符号与反引号 ` 不同,反引号通常位于键盘的左上角)
  • Docker Registry(镜像仓库)详解
  • IntelliJ+SpringBoot项目实战(十二)--设计项目多模块依赖关系和跨模块调用服务和接口
  • summernote富文本批量上传音频,视频等附件
  • goland单元测试
  • 什么是事务,事务有什么特性?
  • 【C语言】指针常量和常量指针
  • 从0开始机器学习--Day29--K-means算法以及PCA降维作业
  • 【Linux网络】自定义应用层协议 (序列化)
  • ATmaga8单片机Pt100温度计源程序+Proteus仿真设计
  • C/C++ 中的类型转换方式
  • 基于Qt/C++/Opencv实现的一个视频中二维码解析软件
  • Flutter在MaterialApp中的builder初始化多个包
  • Linux环境下的基础开发工具 -- 包管理器,vim,gcc/g++,make/makefile,git,gdb/cgdb
  • EcoVadis审核是什么?EcoVadis审核流程包括什么?
  • STM32H7开发笔记(2)——H7外设之多路定时器中断
  • 实验室管理解决方案:Spring Boot技术
  • 网络安全等级保护五个保护等级
  • 经验笔记:git checkout 与 git switch
  • 【智谱开放平台-注册_登录安全分析报告】
  • 单体架构和微服务架构到底哪个好?
  • 怎么编译OpenWrt镜像?-基于Widora开发板
  • Linux驱动编程 - kmalloc、vmalloc区别
  • 多线程中Callable和Runnable的对比
  • 力扣 LeetCode 106. 从中序与后序遍历序列构造二叉树(Day9:二叉树)
  • MySQL45讲 第二十八讲 读写分离有哪些坑?——阅读总结