位运算

[算法]——常见位运算总结 本文介绍了常见的位运算及其组合,并辅以例题帮助读者更好地理解和应用 阅读详情

位运算中设计到的操作有:与、或、非、异或、左移、右移。

题目一:

请实现一个函数,输入一个整数,输出该数二进制表示中1的个数,例如把9表示成二进制是1001,有2位是1.因此如果输入9,该函数输出2。

分析:
1.将给定的整数右移,并且判断每一次右移之后最低位是否为1.
2.设置一个flag,每次将flag左移,判断给定的整数每一位是否为1.
3.将一个数与它减一相与,会将这个数最右边的1变为0.

一、
这种解法在给定的整数是正数时可以正常得到答案,但是在给出的数是负数时,因此负数右移最高位补符号位,所以这种解法可能会引起死循环。

int numberOf1_0( int n )
{
    int result = 0;
    while ( n )
    {
        if ( n & 1 )
            ++result;
        n = n >> 1;
    }
    return result;
}

二、
解决上一个解法出现的死循环问题的新解法。

int numberOf1( int n )
{
    int result = 0;
    unsigned int flag = 1;
    while ( flag )
    {
        if ( n & flag ) 
        {
            ++result; 
        }
        flag = flag << 1;
    }
    return result;
}

三、
令人眼前一亮的解法。

int numberOf1_2( int n )
{
    int result = 0;
    int old_n;
    while ( n )
    {
        n = ( n-1 ) & n;
        result ++;
    }
    return result;
}

结论:

把一个整数减去1之后再和原来的整数做位与运算,得到的结果相当于是把整数的二进制表示中的最右边一个1变成0。

拓展题目:
一、用一条语句判断一个整数是不是3的整数次方。
二、输入两个整数m和n,计算需要改变m的二进制表示中的多少次才能得到n。

MySQL安装配置教程(超级详细) 一、 下载MySQL Mysql官网下载地址:MySQL :: Download MySQL Installer (Archived Versions) 1. 选择要安装的版本,本篇文章选择的是5.7.31版本,点击Download下载 正在上传…重新上传取消 二、 安装MySQL 1. 选择设置类型双击运行mysql-installer-community-5.7.31.0.msi 这里选择是自定义安装,所以直接选择“Custom”,点击“Next” “Developer Default”是 阅读详情

相关推荐

AI 代码赋能短视频带货:服装及多赛道批量内容生产全流程实操

本文聚焦 AI 技术在短视频带货领域的落地应用,以服装赛道为核心,延伸至花卉绿植、图书、茶具等热门领域,系统拆解 AI 工具在选品、素材处理、视频制作(含动态效果、场景搭建)、运营优化等环节的实操方法。针对从业者普遍面临的 “内容生产低效”“无专业技术难出优质视频”“流量运营踩坑” 等痛点,提供从基础工具使用到高阶视频制作的全流程技术方案,助力相关从业者借助 AI 实现批量、高效的短视频内容产出。

m0_67958922的博客 3084

Map Find Way

// NoDirectMapWay.cpp : 定义控制台应用程序的入口点。 /** @coder:chaolee @time:2014/12/06 11:30 @功能:无向图求简单路径 */ #include "stdafx.h" //常量定义: #define MaxNode 20 //最大节点个数 #define InfoSize 10 //节

Codelee1995的专栏 734

单路径微分相除和微分自乘相减算法(PGC-SDD-DSM)

PGC-SDD-DSM算法通过融合单路微分相除和差分自乘,解决了传统PGC解调技术对调制深度和光强干扰敏感的问题,显著提升了解调稳定性和抗失真能力。其高信噪比、低谐波失真以及对参数变化的鲁棒性,使其在光纤传感领域具有重要应用价值。PGC-SDD-DSM算法在计算复杂度方面具有显著的优势,主要体现在其高稳定性和低谐波失真上。这些优势使其在光纤光学干涉传感器中表现出色,尤其是在面对光强干扰和调制深度变化时。

百态·数智思维 | 聚焦大数据、量化与未来AI 842

java递归调用实例 迷宫

java递归调用实例 迷宫

weixin_46365586的博客 765

嵌入式Linux Qt/QML开发实战:从Buildroot配置到应用部署

本文详细介绍了嵌入式Linux Qt/QML开发全流程,从Buildroot系统配置、交叉编译工具链搭建到应用部署与调试。以RK3506开发板为例,提供实战指南,帮助开发者高效完成嵌入式应用开发,解决常见环境配置与性能优化问题。

m2n3o4p5的博客 227

ubuntu20.04安装Qt5.15.2并配置环境

qt官方取消了离线安装的方式,所以推荐在线安装,当然,如果想要自己通过源码编译也可以,参考官方文档:https://wiki.qt.io/Building_Qt_5_from_Git。 在线安装: 1.到官方网站下载:wget https://download.qt.io/official_releases/online_installers/qt-unified-linux-x64-online.run 2.修改文件权限:chmod 777 qt-unified-linux-x64-online.run

f120854632的博客 8807

C语言中常见库函数编写(占坑)

strcpy函数:如果编写一个标准strcpy函数的总分值为10,下面给出几个不同得分的答案: 2分 void strcpy( char *strDest, char *strSrc ) { while( (*strDest++ = * strSrc++) != ‘\0’ ); }4分 void strcpy( char *strDest, const char *strSrc ) //将

_Findway的博客 484

UDS服务应该支持哪些否定响应码

UDS服务应该支持哪些否定响应码所有服务都需支持的否定响应码具体的服务需要支持的否定响应码否定响应码定义及其取值 USD诊断服务的否定响应中包含有导致否定响应原因的编码,称为否定响应码(NRC, Negative Response Code)。否定响应码的取值范围为0x00 - 0xFF,被分为三组: 0x00:服务器内部实现否定响应码判断逻辑时使用,表示要给出肯定响应。 0x01 – 0x7F:诊断通信相关的否定响应码。 0x80 – 0xFF:服务器收到诊断服务请求时,由于某些条件不满足要求而给出的否定

闲聊汽车软件开发 4万+

位运算全面总结,关于位运算看这篇就够了

关于位运算的奇技淫巧,看完这篇你就能灵活使用位运算了。

pursuit的博客 12万+

使用Matlab simulink的PLC coder功能进行算法搭建与处理

使用的案例如下: Anti-Windup PID Control Demonstration with Feedforward Control 将其中的PID块生成SCL语言再导入TIA 使用的平台如下: Matlab 2019b TIA portal 15.1 应用:可以在PLC中搭载一些并不方便使用的,或者比较难使用的算法 步骤如下: 首先打开案例,案例地址我放在最下面,点击Run运行仿真,必...

苦走一口田 1万+

(数字图像处理MATLAB+Python)第五章图像增强-第一节:图像增强概述和基于灰度级变换的图像增强

图像增强(Image Enhancement):指不考虑图像降质原因,利用各种数学方法和变换手段,增强图像中人们感兴趣部分或提高有用的图像特征的清晰度。从图像质量来看,图像增强提高了图像的可懂度,改善了图像的视觉效果例如在现实场景中,针对那些对比度较差、视觉效果不好的图像,我们就可以利用图像增强改善视觉质量图像增强可分为如下几种基于灰度级变换的图像增强基于直方图修正的图像增强基于照度反射模型的图像增强基于模糊技术的图像增强基于伪彩色处理的图像增强其他图像增强方法分段线性灰度级变换。

快乐江湖的博客 3334

说一说位运算

位运算是什么?‘&’、 ‘|’ 、‘^’、‘~’这些符号是啥意思?快来看看位运算的基础知识吧,文末链接有进阶,学习更快乐!

Sdom_L的博客 6074

某物data魔改与变种算法还原(含加解密Py纯算)

某物data加解密、设备指纹魔改、变异、自定义加密分析与纯算还原

吴秋霖的博客 1281

【优选算法 & 位运算】位运算算法入门详解:位运算小专题

【优选算法 & 位运算】位运算算法入门小专题:判定字符是否唯一丢失的数字;两整数之和;只出现一次的数字Ⅱ;消失的两个数字;

OuO-1 的博客 3151

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

位运算各种方法总结

位运算1、按位与2、按位或3、按位取反4、按位异或5、按位同或6、左移7、带符号右移8、无符号右移9、python实现各种位运算操作 \quad \quad现代计算机中,几乎都是二进制计算机(三进制计算机仅有少量),所有的数据都以二进制的形式存储在设备中。位运算就是直接对整数在内存中的二进制位进行操作。 \quad \quad需要注意,位运算是针对 二进制 的运算,对每一个位进行布尔运算操作。所以 手动 进行 位运算计算 时,需要将数转换成二进制的表示形式,再进行计算。 1、按位与 \quad \quad只

weixin_45666566的博客 7987

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

位运算的总结

这里我们运用集合与集合的思想,n ,k为两个不同的集合,如果可以使 n 修改为 k,我们是从 n 中去掉元素使其等于 k,那么 k 应该为 n 的子集。要删除最小的元素即为删除最右边的 1。这个题目和之前的类似,只是多了一个可以增加元素的操作,所以仍然是按位异或得到集合 s,这个集合包含 state 中独有的 (需要删除的元素) 和 goal 中独有的 (需要添加的元素)这里是要取两个集合的交集,我们可以用 set 来去重,把两个数组中的元素均存入 set 中,然后减去 set 的大小即为重复元素的数量。

a140781的博客 1714

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

位运算及其应用

1.位运算优势以及优先级2.位运算和逻辑运算符的对比3.位运算的应用(获取最后一位,快速取模,交换两数,幂运算等等)

zsgmer的博客 2724

位运算(1)_常见位运算总结

新的算法专栏出炉--位运算,位运算(1)_常见位运算总结,感兴趣的宝子们千万不要错过哦!!! 下篇让初步掌握位运算的五道题

wer24_25的博客 1805

位运算算法

于是我们可以像下面这样,一个比特位代表一个字母,这样子我们只要26个比特位就能表示出所有的小写字母,我们让0代表该字母没出现过,1代表该字符出现过。然后,当我们对这个取反后的数加1时,会从最低位(最右侧)开始,遇到第一个0时停止进位,并将这个0及其之后的所有位都设置为1,而之前的所有位都保持不变(但由于是取反后的数,所以它们实际上是原数中对应位置的相反值)。假设我们有一个数 n = 29,并且我们想知道它的二进制表示中的第 x = 3 位(从右向左,从0开始编号)是0还是1。位(从0开始计数)修改成1。

2301_80224556的博客 2041

简记位运算

《位运算小结》   位运算的重要程度从各种课本上就能感受到,毕竟计算机只认识二进制,在工作当中位运算也是能够提高效率的利器。比如汉明距离就用到了异或运算以及查找位1的个数相关的位运算,如果不了解这些而单纯使用循环的话,那效率就大打折扣了。 Key Words:位运算、与、或、异或、取反、位移运算 Beijing, 2020 作者:RaySue Code: Agile Pioneer   位运算   计算机内存中都是以二进制形式存储的。位运算就是直接对整数在内存中的二进制位进行操作。由.

雄关漫道真如铁 而今迈步从头越 4555

详解位运算

位运算是基于整数的二进制表示进行的运算。由于计算机内部就是以二进制来存储数据,位运算是相当快的。它直接对整数的二进制位进行操作。位运算符作用于位,并根据每一位是0还是1来产生结果。基本的位运算共 6 种,分别为按位与(AND)、按位或 (OR)、按位异或 (XOR)、按位取反(NOT)、左移和右移。

weixin_73964795的博客 2141

编程基础:位运算01,位运算引言

编程基础:位运算

2401_82825368的博客 1433

位运算总结

文章目录位运算基础1 技巧一:用于消去x的最后一位的11.1 应用一:用$O(1)$时间复杂度检测整数n是否是2的幂次1.2 应用二:计算在一个32位的整数的二进制表示中有多少个11.3 应用三:将整数A转换为B,需要改变多少个bit位2 技巧二:使用二进制进行子集枚举2.1 应用一:给定一个含不同整数的集合,返回其所有的子集3 不用任何比较判断找出两个数较大的数4 只用位运算不用算术运算实现整数...

会飞的鱼的博客 1985

【算法详解】位运算

在计算机内部,数是以「二进制(Binary)」的形式来进行存储。位运算就是直接对数的二进制进行计算操作,在程序中使用位运算进行操作,会大大提高程序的性能。

Z1tai的博客 1901
上一篇: 二叉树前序、中序、后序遍历非递归写法的透彻解析
下一篇: Linux命令——wc
Findway_
博客等级 码龄10年 36粉丝 117原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值