C++编程技巧—对数运算实现

C++编程技巧—对数运算实现可以调用 C C 中现成的算法库实现整数对数运算 比较高效的 64 位整数对数运算实现方法如下 intLog2 uint64 tn intresult if n amp 0xffffffff00 result 32 n 32 if n amp 0x00000000ff

可以调用C、C++中现成的算法库实现整数对数运算,比较高效的64位整数对数运算实现方法如下:

int Log2(uint64_t n) { int result; if( n & 0xffffffff00000000) { result +=32; n >>= 32; } if( n & 0x00000000ffff0000) { result +=16; n >>= 16; } if( n & 0x000000000000ff00) { result +=8; n >>= 8; } if( n & 0x00000000000000f0) { result +=4; n >>= 4; } if( n & 0x000000000000000c) { result +=2; n >>= 2; } if( n & 0x0000000000000002) { result +=1; n >>= 1; } }



版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/232968.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Mybatis源码解析一(SqlSessionFactory和SqlSession的获取)

    Mybatis源码解析一(SqlSessionFactory和SqlSession的获取)一、SqlSessionFactorySqlSessionFactory是MyBatis的关键对象,它是个单个数据库映射关系经过编译后的内存镜像;SqlSessionFactory对象的实例可以通过SqlSessionFactoryBuilder对象类获得;SqlSessionFactoryBuilder从XML配置文件或一个预先定制的Configuration的实例构建出SqlS…

    2022年5月29日
    30
  • Android APK 签名校验[通俗易懂]

    Android APK 签名校验[通俗易懂]非对称加密算法非对称加密算法需要两个密钥:公开密钥(简称公钥)和私有密钥(简称私钥)。公钥与私钥是一对,如果用公钥对数据进行加密,只有用对应的私钥才能解密;如果用私钥对数据进行加密,那么只有用对应的公钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。非对称加密算法是数字签名和数字证书的基础,大家非常熟悉的RSA就是非对称加密算法的一种实现。消息摘要算

    2022年5月29日
    421
  • PO模式之无模式

    PO模式之无模式目标1.深入理解方法封装的思想2.能够使用方法封装的思想对代码进行优化3.深入理解PO模式的思想4.熟练掌握PO模式的分层思想PO模式学习思路采用版本迭代的方式来学习,便于对不同版本的优缺点进行对比和理解。V1:不使用任何设计模式和单元测试框架V2:使用UnitTest管理用例V3:使用方法封装的思想,对代码进行优化…

    2022年5月30日
    56
  • anaconda pycharm设置编译器_anaconda默认环境

    anaconda pycharm设置编译器_anaconda默认环境Pycharm是一个非常好用的Python编译运行IDE,anaconda则用于管理Python中各种有用的包。下面讲讲在Ubuntu系统下让Pycharm能够使用anaconda管理的各种包。1找到编译器选项首先打开Pycharm然后点击File->settings,然后就可以看到下图所示界面:…

    2022年8月28日
    5
  • Java后台开发知识一览

    Java后台开发知识一览Java后台开发知识一览1、后端WEB服务器:Weblogic、Tomcat、WebSphere、JBoss、Jetty核心框架:SpringFramework分布式服务框架Dubbo(感谢@浅浅浅丿忧伤指正)安全框架:ApacheShiro视图框架:SpringMVC服务端验证:Hibernate+Validator布局框架:SiteMesh工作流…

    2022年7月8日
    18
  • c++中按位取反_取反和按位取反

    c++中按位取反_取反和按位取反#include<stdio.h>#include<iostream>usingnamespacestd;voidmain(){//做这类题目抓住两点:第一、无论是以进制表示还是整数形式赋值给变量,都要根据变量相应//的数据类型,表示为…

    2022年8月14日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号