算法:n&(n-1)的总结

qwen2vl ValueError: Image features and image tokens do not match: tokens: 568, features 600 本文介绍了一个用于计算多模态数据集中样本token数量的Python工具,特别针对包含文本和图像的Qwen2-VL模型数据集。 阅读详情
基本原理:

      n&(n-1)作用:将n的二进制表示中的最低位为1的改为0,先看一个简单的例子:

      n = 10100(二进制),则(n-1) = 10011 ==》n&(n-1) = 10000

      可以看到原本最低位为1的那位变为0。

以下几个应用:

1. 求某一个数的二进制表示中1的个数(leetcode 191)

class Solution {
public:
     int  NumberOf1(int n) {
         int count = 0;
         while(n){     
                 count++;
                 n=n&(n-1);

         }
         return count;
     }
};

2.判断一个数是否是2的方幂(leetcode 231)

class Solution {
public:
    bool isPowerOfTwo(int n) {
       if(n<=0) return false;
        return !(n&(n-1));
    }
};

3.计算N!的质因数2的个数。

假设是8! 有1 2 3 4 5 6 7 8

第一次 则它有 2 4 6 8四个具有2的质因数

第二次 2 4 6 8变为 1 2 3 4 则只有 2 4具有2的质因数

第三次 2 4 变为 1 2 则只有2 具有2的质因数 

公式 f(n) = (n/2) + (n/4) + (n/8) + (n/16) + ...  

推及一般N!的质因数2的个数为N - (N二进制表示中1的个数)

8!:8-1=7个

class Solution{
public:
 int primNumber(int n){ 
  int count=0;
  while(n != 0)
   {
   n = n&(n-1);
   count++;
   }
  return n-count;
}

4(leetCode 338. Counting Bits)

题目:给定一个非负整数NUM。对于范围0≤i≤num中的每个数字i,计算二进制表示中1的个数并将其作为数组返回。

例如:对于num=5, 您应该返回[0,1,1,2,1,2,1]

class Solution {
public:
    vector<int> countBits(int num) {
        vector<int> res(num+1,0);
        for(int i=1;i<=num;i++){
            res[i] =res[i&(i-1)] + 1;
        }
        return res;
    }
};

基于STM32L4XX 、HAL库的TMP144YFFR数字温度传感器驱动应用C语言程序设计 define TMP144_ADDRESS 0x00 // 默认为全局地址,用于单器件或MDA命令。#define TMP144_CMD_READ_TEMP 0x00 // 读取温度寄存器命令。if (temp_raw & 0x800) { // 判断第11位(符号位) 阅读详情

相关推荐

转录组分析中的Fastp和FastQC:如何快速检测数据质量并优化流程

本文深入探讨了转录组分析中数据质量控制的核心流程,重点介绍了Fastp和FastQC两款工具的组合应用。FastQC负责对原始测序数据进行全面质量评估,生成可视化报告;Fastp则能一站式完成接头切除、低质量序列过滤、长度筛选等关键质控步骤。文章提供了详细的参数解读、实战脚本和自动化流程构建指南,帮助研究人员快速检测数据质量并优化预处理流程,为下游的差异表达等分析奠定可靠基础。

weixin_28452161的博客 181

C语言 神奇的式子:n=n&(n-1) 涵义,作用及其应用场景

世界上只有10种人,懂二进制的和不懂二进制的

YT的博客 1万+

audio框架学习-Audio_Flinger分析

文章目录一、代码位置二、audio服务启动2.1 main服务2.2 audioflinger添加到系统服务中2.3 audioflinger的对外接口 之前记录过audioTrack的笔记,这次继续参考audioFlinger相关的代码并做笔记; 参考文档:https://www.cnblogs.com/innost/archive/2011/01/15/1936425.html和https://blog.youkuaiyun.com/zyuanyun/article/details/60890534?spm=100

永不秃头的程序员的博客 2135

n&(n-1)

n&(n-1)

zyf7764029的博客 321

Excel炒股党必备:手把手教你用Power Query免费获取并刷新股票历史数据

本文详细介绍了如何利用Excel中的Power Query工具免费获取并自动刷新股票历史数据,特别适合Excel炒股党。从环境配置、数据源选择到实战操作,手把手教你建立智能数据管道,实现高效投资分析。通过参数化股票代码和定时刷新功能,大幅提升数据更新效率。

weixin_26767391的博客 654

ThinkBook 16p 2024 BIOS降压定频实战:从解锁CFG Lock到AC Loadline调优

高性能笔记本在满载时频繁撞上温度墙,通常源于固件层默认电压冗余过大,而系统级降压工具又受限于CFG Lock锁定。要根治问题,需要从BIOS固件层面理解电压管理机制——AC/DC Loadline参数控制着CPU在不同负载下的电压请求,通过修改这些负载线值可以安全降低电压,解锁CFG Lock后还能让XTU、ThrottleStop等软件调参工具恢复可用。这种BIOS级调优在工程实践中广泛用于改善散热、稳定频率、压降风扇噪音,尤其适用于联想ThinkBook 16p 2024与拯救者Y9000P等采用HX平

weixin_32496547的博客 388

n&(n-1)到底是个啥

如果n是个奇数 很明显这个式子之后就相当于把最低位的1去掉了,变成比它小了1的偶数 如果n是个偶数,n-1就是把n最后的那些0变成1了,把最后一个1变成0了,n&amp;(n-1)就是把最后一个1变成了0了,后面都是0 所以n&amp;(n-1)的用途怎么说都是把最后一个0抹去了,可以用来计算刚开始n有几个0,只要每次让n=n&amp;(n-1),当n=0的时候结束 ...

qq_30339595的博客 2879

Xilinx-复旦微-FPGA-眼图BlockDesign系统制作-针对PCIE系统

XIlinx-复旦微电子-FPGA-眼图BlockDesign系统制作-针对PCIE系统,手把手教你如何建立眼图测试

weixin_43444334的博客 2596

关于二进制的巧妙方法 —— n=n&(n-1)

关于二进制的巧妙方法 —— n=n&(n-1)

Adz1119的博客 299

Lattice FPGA 开发流程(以 ECP5 为例)

以下是以 Lattice ECP5 FPGA 为例的开发流程,涵盖从需求分析到硬件部署的完整步骤。ECP5 系列是 Lattice 提供的高性能、低功耗 FPGA,适用于通信、工业控制和嵌入式系统等领域。

u011732210的博客 1258

FFDNet-pytorch版本代码训练教程

该文章为FFDNet-pytorch版本代码训练教程,抓紧订阅学习!尽早入门发论文哦!

假技术Po主 1507

n&(n-1)的运用

先来看个题:输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。 先上代码: public int NumberOf1(int n) { int count = 0; while (n!=0) { count++; n = n & (n - 1); } ...

weixin_40744101的博客 1837

RH850从0搭建Autosar开发环境【3X】- Davinci Configurator之BswM模块配置详解(上)

RH850从0搭建Autosar开发环境【3X】- Davinci Configurator之BswM模块配置详解(上)

weixin_42412049的博客 739

n&(n-1)表示什么?n&(-n)表示什么?

1、n&amp;(n-1)(注意这里是X&Y不是X*Y)表示将一个数据比如7按照二进制表示后,将最右边的1变成0,比如将0111变成0110. 这个公式有两个左右,一个作用是可以用来统计一个数1的个数,也可以用于判断一个数据是否为2的幂。判断1的个数while(n&amp;(n-1))方式统计次数,判断是否为2的幂则直接判断n&amp;(n-1)是否==0,等于0则是否则不是。因为2的幂二进制数只会包含一个1. 2、n&amp;(-n)表示什么,这个表示将一个数只是保留二进制下最右边的1的位,而其

weixin_37871174的博客 7308

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

剑指 offer 15 二进制中1的个数 ( n & n - 1 位运算的巧用)

1. 题目描述 2 .算法思路 由于本系列都是提供的最优解,因此直接上一个骚操作。 虽然按照正常的解法,按位相与,时间复杂度也只是log级,但是本题还是略过。 本题使用 n & (n - 1) n & n -1 是个啥操作呢? 就是按位想与,例子下面 第一轮 n : 1 0 1 0 1 0 0 0 n -1 : 1 0 1 0 0 1 1 1 n & n - 1 : 1 0 1 0 0 0 0 0...

Y_M的博客 158

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

去掉一个二进制数的最末尾的那个1

黑科技一: n & (n-1) 例子: 剑指offer15题,二进制中1的个数 class Solution { public: int hammingWeight(uint32_t n) { int count = 0; while(n){ n = n & (n-1); ++count; } return count; } }; 黑科技二: 把最右边那个1的左

页页读 1569

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

C++:求整数的二进制中1的个数(位运算)

利用位运算求整数的二进制形式中1的个数 问题说明 对于数字7,它的二进制形式是0111(简单起见,这里只显示四位二进制),那么整数7中的1的个数就是3. 思路 这里提出一个基于位运算(与)的方法来求解。首先,我们知道如果N是偶数,那么N-1就是奇数。反之,如果N是奇数,那么N-1就是偶数。如果N为奇数,那么N-1就是把N的最低位(二进制形式)的1置为0。此处插一句,判断一个整数的奇偶性,只要判断其...

weixin_43864155的博客 2435

面试--n的二进制1的个数(46)

一个重要的规律:找到一个方法,每次循环都是n中的1少一个? n’= n &(n-1) 1 n” = n’&(n’-1) 2 … ++ 直到 n””” 变为0;

qfzhangwei的专栏 903

LeetCode 191. Number of 1 Bits

Write a function that takes an unsigned integer and returnthe number of '1'bits it has (also known as the Hamming weight). Example 1: Input: 00000000000000000000000000001011 Output: 3 Explanat...

打得一手好铁 171

leetcode-面试题15. 二进制中1的个数

 题目来自LeetCode,链接:面试题15. 二进制中1的个数。具体描述为:请实现一个函数,输入一个整数,输出该数二进制表示中 1 的个数。例如,把 9 表示成二进制是 1001,有 2 位是 1。因此,如果输入 9,则该函数输出 2。  示例1: 输入:00000000000000000000000000001011 输出:3 解释:输入的二进制串 0000000000000000000000...

JR_Chan的博客 454

剑指offer - 二进制中1的个数 - JavaScript

专注前端与算法的系列干货分享,欢迎关注(¬‿¬): 「微信公众号:心谭博客」| xxoo521.com | GitHub 题目描述 输入一个整数,输出该数二进制表示中 1 的个数。其中负数用补码表示。 解法 1: 判断每一位 依次判断数字的每一位,统计其中 1 的数量。整体思路如下: 数字先和 1 相与,结果为 0 说明改位是 1,结果为 1 说明该位是 1 将 1 左移一位,再和数字相与。...

GodBMW的博客 316

算法数据结构中有哪些奇技淫巧?

点击“简说Python”,选择“置顶/星标公众号”福利干货,第一时间送达!版权声明:本文为苦逼的码农原创。未经同意禁止任何形式转载,特别是那些复制粘贴到别的平台的,否则,...

简说Python的博客 401

LeetCode Counting Bits

Given a non negative integer number num. For every numbers i in the range 0 ≤ i ≤ num calculate the number of 1's in their binary representation and return them as an array. Example: For num = 5

clx44551的博客 898

剑指offer:11.二进制中1的个数

https://github.com/PhillipHuang2017/SwordOffer 11.二进制中1的个数 题目描述 输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。 解题思路 负数用补码表示,所以运算方法和正数一样,无需做特殊考虑。 这里用到了一个很巧妙的运算方式,即n & (n - 1),这个运算表示将最右边的1变成0,解释见下面 因为n-1表示将n最右...

Dragon_Prince的博客 232

剑指offer 面试题15. 二进制中1的个数

【二进制中1的个数】:按位判断,N & (N - 1) class Solution { public: int hammingWeight(uint32_t n) { int ret=0; while(n!=0){ n&amp;=(n-1); ret++; } retu...

g534441921的博客 126

剑指Offer——二进制中1的个数

二进制中1的个数 题目描述 请实现一个函数,输入一个整数,输出该数二进制表示中 1 的个数。例如,把 9 表示成二进制是 1001,有 2 位是 1。因此,如果输入 9,则该函数输出 2。 想法 直接按位与,时间复杂度O(logn)O(logn)O(logn)。 利用n&amp;(n−1)n\&amp;(n-1)n&amp;(n−1)将n最后一位1置0,时间复杂度O(m)O(m)O(m),m为1...

Radium_1209 225
上一篇: TCP协议中的三次握手和四次挥手(图解)
下一篇: 生产者消费者模式中条件判断是使用while而不是if
Mike_CSU
博客等级 码龄10年 6粉丝 39原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值