首页 > 其他分享 >利用位运算加速计算

利用位运算加速计算

时间:2023-03-16 10:46:18浏览次数:22  
标签:运算 二进制 整数 int 计算 整除 加速

整除2与模2

x: int = 123
# 整除2:
x = x>>1
# 模2: 
x = x&1

x&(x−1) (Brian Kernighan 算法)

对于任意整数x: int,令 x = x&(x−1),该运算将x的二进制表示的最后一个1变成0.
用处:

  1. 计算整数的二进制表示中有多少个1

x&(-x)

-x的运算对应的二进制操作是: 所有位置取反+1
对于x: int, x&(-x)的作用是得到x的二进制表示中最低位的1及其后面的0. 比如, 如果x=12,那么它的二进制表示是00001100,那么x&(-x)就是00000100.
用处:

  1. 判断整数数是否为2的幂
  2. 计算整数数的最大的2的幂的因数

未完待续...

标签:运算,二进制,整数,int,计算,整除,加速
From: https://www.cnblogs.com/jjvv/p/17221363.html

相关文章

  • C语言编程>第五周 ③ 编写一个程序,用于求m的n次幂。m 和n 由用户输入, 调用自定义的求m
    例题:编写一个程序,用于求m的n次幂。m和n由用户输入,调用自定义的求m的n次幂的函数,并输出计算结果。​​代码如下:​​#include<stdio.h>intpower(intm,intn);intm,n,a=......
  • Java中的BigDecimal运算
    BigDecimal是Java中的一个高精度数值类型,它可以用于处理需要高精度计算的场景,例如财务计算。在进行加减乘除运算时,BigDecimal提供了多种方法。下面是几个示例:1.加法Big......
  • 按位运算符
    按位运算符指定a=60(00111100);b=13(00001101)按位与(&)对两个数进行操作,然后返回一个新的数,这个数的每个位都需要两个输入数的同一位都为1时才为1,如下图:(a&b)结......
  • Vue.js 计算属性(p18~p20)
    视频18视频19视频20姓名案例_插值语法实现<!DOCTYPEhtml><html> <head> <metacharset="UTF-8"/> <title>姓名案例_插值语法实现</title> <!--引入Vue-->......
  • 位运算
    位运算1位逻辑运算符:&(位“与”)and^(位“异或”)|(位“或”)or~(位“取反”)2移位运算符:<<(左移)>>(右移)优先级位“与”、位“或”和位“异或”运算符都是双目......
  • python应用题 计算球体表面积和体积
    提示代码:#请在_____完善一行代码PI=3.14r=eval(input())S=______#球体表面积V=______#球体体积print("______".format(S,V))......
  • 用js进行加法计算
    html加js代码1<!DOCTYPEhtml>2<htmllang="en">34<head>5<metacharset="UTF-8">6<metahttp-equiv="X-UA-Compatible"content="IE=edge">......
  • 2023年中国高校计算机大赛-团队程序设计天梯赛(GPLT)上海理工大学校内选拔赛 J 前缀复制
    题目链接https://ac.nowcoder.com/acm/contest/52244/J对于给定的字符串s我们算出它每个位置能到达的前缀最大合法位置,然后进行dp即可先对于s串求一遍kmp,然后建立boder......
  • 时间复杂度计算-go
    两段函数,判断函数执行速度funct1()int{fmt.Println("helloworld")return0}此段函数运行次数为2次,打印字符串一次,返回0值一次,T(n)估算值为:T(n)=2//i:=0......
  • [计算机基础笔记] C/C++
    C语言面向过程,C++面向对象。面相过程的思维方式,它更加注重这个事情的每一个步骤以及顺序。他比较直接高效,需要做什么可以直接开始干。程序=算法+数据面向对象的思维方式......