【算法篇】位运算 —— 基础篇
作者主页作者简要描述算法篇Linux篇QT百日筑基篇数据结构篇基础位运算目录/索引目录基础位运算目录/索引位运算宝典位运算宝典1: 基础位运算位运算宝典2: 给定一个数n 确定他的二进制位的第x位是1还是0.位运算宝典3:给定一个数将他的第x位修改为1.位运算宝典4:给定一个数将他的第x位修改为0.位运算宝典5:位图的思想。位运算宝典6提取一个数n二进制表示最右侧的1位运算宝典7干掉一个数n二进制表示最右侧的1位运算宝典8位运算的优先级位运算宝典9异或运算的运算律。题目一 191. 位1的个数题目解析算法原理编写代码运行/提交题目二338. 比特位计数题目解析算法原理编写代码运行/提交题目三461. 汉明距离题目解析算法原理编写代码运行/提交扩展__builtin_popcount题目四136. 只出现一次的数字题目解析算法原理编写代码运行/提交在学习位运算时我们要首先的了解一些位运算的基础知识.位运算宝典位运算宝典1: 基础位运算 左移特点: 尖部分指向左侧所以是左移一般数左移会将自身缩小2倍。例如 2 1 0010 - 0001 从2到一。 2位就是2的次方倍 42 1。 : 右移特点: 尖部分指向左侧所以是右移一般数左移会将自身扩大2倍。例如 2 1 0010 - 0100 从2到4。~ 取反特点: 将自身的二进制进行相反的处理 原来是1变0是0变1.例如: 0101 ——取反 1010. 按位与特点: 有0为0两个都是1才为1.例如:0011 0101 0001.| 按位或特点: 有1为1两个都是0才为0.例如:0011 | 0101 0111.^ 按位异或特点相同为0 相异为1。 / 无进位相加。例如:0011 ^ 0101 0110.位运算宝典2: 给定一个数n 确定他的二进制位的第x位是1还是0.答案 (nx) 1 是0则为0 是1则为1.位运算宝典3:给定一个数将他的第x位修改为1.答案 n | (1x)位运算宝典4:给定一个数将他的第x位修改为0.答案n ~(1 x)位运算宝典5:位图的思想。答案哈希思想。 给定一个int能表示32位的比特位。如果一个数组的第二位是否有数我们只要查看这个int的第二位是否为1即可。位运算宝典6提取一个数n二进制表示最右侧的1答案 n -n位运算宝典7干掉一个数n二进制表示最右侧的1答案: n ((~n)1) / n(n-1)位运算宝典8位运算的优先级答案 管什么优先级能加括号就加括号。~ ^| 尽量加括号位运算宝典9异或运算的运算律。答案 异或遵循异或交换律。题目一 191. 位1的个数题目解析题目所人话就是给一个数让我们看看他的二进制有几个1.算法原理方法一我们可以循环的进行移动。添加一个计数的变量。我们将n和1进行如果这个结果为1就将这个计数的变量进行。然后继续的进行左移。 循环结束的标志就是我们的n为0.为0了就代表后面没有1了。方法二速度更快采用宝典7。 我们用宝典7每一次都干掉最右侧的1. 知道将所有的1都干掉。结果也就为0了。编写代码方法一class Solution { public: int hammingWeight(int n) { int ret; while(n) { if(n 1) ret; n n 1; } return ret; } };方法二class Solution { public: int hammingWeight(int n) { int cnt 0; while (n) { cnt; n n - 1; } return cnt; } };运行/提交题目二338. 比特位计数题目解析我们从0到n这中间的数所包含1的个数。 将他们放到ans数组中。例如 : 1 : 0001 包含1个1所以我们的返回数组ans[1]1;3: 0101 包含两个1 所以我们的返回数组ans[3]2算法原理这里我们要进行将所有的数组放到ans中所以要进行遍历一边这个数组。一定要进行一个for。我们要在内部是判断这个i位置有几个1这就回到我们题目一的方法了。当然我们这里要创建一个数组来进行返回。我这里习惯将vector命名为dp编写代码class Solution { public: vectorint countBits(int n) { vectorint dp(n 1); dp[0]0; for(int i1;in;i) { int ret0,ni; while(n) { n (n - 1); ret1; } dp[i]ret; } return dp; } };运行/提交题目三461. 汉明距离题目解析我们计算一个数二进制的两个数的不同位置。算法原理我们可以先让x和y疑惑一下。这样可以让我们的不同位置直接的变成1.然后我们直接找异惑玩的位置是1就好了 即此题就是在找异惑1的个数。我们让x异或完的数的值给s 我们找s中的1的个数就好了ss-1是最简单的找1的因为后最前面的1会直接的进行消除。我们这时候创建一个变量就行了。计数然后最后的时候进行返回就好了。编写代码class Solution { public: int hammingDistance(int x, int y) { //取出最右侧的1的位置 int s x ^y; int ret0; while(s) { ss-1; ret; } return ret; } };运行/提交扩展__builtin_popcount这里提供一个函数__builtin_popcount是GCC/Clang 编译器内置函数不属于标准库不用包含任何头文件就能直接使用。 只要是.c/.cpp文件正常编译即可调用。builtin:执行内建的函数, popcount:爆米花作用 计算一个数字中二进制形式1的个数。ai关键词__builtin_popcount介绍一下这个函数并给出如何去使用。函数的说明豆包ai生成__builtin_popcount 完整介绍与使用教程一、基础介绍1. 作用GCC/Clang 编译器内置函数计算一个无符号整数二进制中 1 的个数汉明重量底层调用 CPUpopcnt硬件指令速度远快于手写循环统计。2. 三个版本严格区分类型混用会出错函数名参数类型适用整数范围__builtin_popcountunsigned int32 位普通 int 数字__builtin_popcountlunsigned long64 位 longlong 类型__builtin_popcountllunsigned long long64 位长长整型大数、状压 DP 常用3. 关键特性无需头文件编译器内置不用#include任何库仅 GCC/Clang 可用Windows MSVC (VS) 不支持禁止直接传负数有符号负数会按补码处理统计出大量 1必须强转无符号。class Solution { public: int hammingDistance(int x, int y) { return __builtin_popcount(x^y); } };题目四136. 只出现一次的数字题目解析给定我们一个数组 我们要在这个数组中找到哪个只出现一次数字的那个数字。算法原理我们注意到^x^x0, 0^xx;这两个性质并且异或支持交换率所以我们可以创建一个ret让他等于0然后每一次进入数组都进行一次异或。图解编写代码class Solution { public: int singleNumber(vectorint nums) { int ret0; for(auto e:nums) { ret ^e; } return ret; } };运行/提交

相关新闻

技术创业中的投资人沟通指南:如何用工程语言讲好商业故事

技术创业中的投资人沟通指南:如何用工程语言讲好商业故事

技术创业中的投资人沟通指南:如何用工程语言讲好商业故事 一、技术人融资的典型翻车现场:展示的是架构图,投资人看到的是困惑 技术创业者见投资人,最常见的沟通事故是这样的:打开 PPT,第一页是系统架构图。…

2026/7/25 6:39:37 阅读更多 →
大模型“胡说八道”险酿舆情!我干掉外挂向量库,靠人大金仓1条混合SQL让政务RAG准确率飙升40%

大模型“胡说八道”险酿舆情!我干掉外挂向量库,靠人大金仓1条混合SQL让政务RAG准确率飙升40%

🔥关注墨瑾轩,带你探索编程的奥秘!🚀 🔥超萌技术攻略,轻松晋级编程高手🚀 🔥技术宝库已备好,就等你来挖掘🚀 🔥订阅墨瑾轩,智趣学习不…

2026/7/23 14:47:03 阅读更多 →
力学测试数据离散大?几款实用结构专利标准化检测流程

力学测试数据离散大?几款实用结构专利标准化检测流程

不少质检人员在做材料拉伸、抗渗、静液压耐压测试时,经常遇到同一批次试样测试结果差距悬殊,排除原料、操作手法问题后,依然无法稳定得到统一数据,和客户送检数据出现偏差,产生品质争议。出现该问题的核心原因是传统力…

2026/7/24 2:30:00 阅读更多 →

最新新闻

Godot 4 ShaderMaterial实现动态交互水波纹:从原理到工程实践

Godot 4 ShaderMaterial实现动态交互水波纹:从原理到工程实践

1. 项目概述:从静态到动态的交互式水面在游戏和交互式应用中,水面的表现力直接关系到场景的沉浸感。一个静态的、毫无波澜的水面,即便贴图再精美,也显得死气沉沉。而一个能够响应角色脚步、雨滴、甚至玩家点击,泛起层层…

2026/7/25 6:41:56 阅读更多 →
Ventoy工具实现Ubuntu快速安装与多系统管理

Ventoy工具实现Ubuntu快速安装与多系统管理

1. Ventoy工具与Ubuntu安装概述 作为一名常年折腾各种Linux发行版的老玩家,我最近发现Ventoy这款开源工具彻底改变了传统系统安装的方式。它允许你将多个ISO镜像直接扔进U盘就能启动安装,再也不用反复格式化U盘了。就拿Ubuntu安装来说,传统方…

2026/7/25 6:41:56 阅读更多 →
C++实现PCA算法:从数学原理到高性能优化实践

C++实现PCA算法:从数学原理到高性能优化实践

1. 项目概述与核心价值 最近在整理一些老项目的代码,翻到了一个几年前做的PCA(主成分分析)算法的C实现。当时是为了处理一批高维的工业传感器数据,用Python的scikit-learn跑起来总觉得在实时性上差点意思,尤其是在嵌入…

2026/7/25 6:41:56 阅读更多 →
LangChain退场?2026年五大替代框架深度对比

LangChain退场?2026年五大替代框架深度对比

# LangChain退场?2026年五大替代框架深度对比## 1. 背景:当LangChain不再是万能钥匙LangChain自2023年开源以来,迅速成为LLM应用开发的事实标准,其版本迭代已到0.3.x,但越来越多团队在2025-2026年发现它并非银弹。核心…

2026/7/25 6:41:56 阅读更多 →
Linux环境变量详解:设置、管理与最佳实践

Linux环境变量详解:设置、管理与最佳实践

1. 环境变量基础概念解析在Linux系统中,环境变量是进程运行环境的重要组成部分。简单来说,它们就像程序运行时的"便签纸",记录着各种配置信息和路径指引。我第一次接触这个概念是在调试一个Python脚本时,发现它总是找不…

2026/7/25 6:41:56 阅读更多 →
别再盲目调API了!——企业级AI写作部署前必须完成的4层压力测试:语义一致性、术语稳定性、多轮记忆衰减率、跨文档逻辑锚定精度

别再盲目调API了!——企业级AI写作部署前必须完成的4层压力测试:语义一致性、术语稳定性、多轮记忆衰减率、跨文档逻辑锚定精度

更多请点击: https://kaifayun.com 第一章:别再盲目调API了!——企业级AI写作部署前必须完成的4层压力测试:语义一致性、术语稳定性、多轮记忆衰减率、跨文档逻辑锚定精度 在生产环境部署AI写作系统前,仅验证响应延迟…

2026/7/25 6:40:56 阅读更多 →

日新闻

突破文档下载限制:kill-doc让你看到的都能保存

突破文档下载限制:kill-doc让你看到的都能保存

突破文档下载限制:kill-doc让你看到的都能保存 【免费下载链接】kill-doc 看到经常有小伙伴们需要下载一些免费文档,但是相关网站浏览体验不好各种广告,各种登录验证,需要很多步骤才能下载文档,该脚本就是为了解决您的…

2026/7/25 0:00:35 阅读更多 →
C++ string类模拟实现:从深拷贝到内存管理的完整指南

C++ string类模拟实现:从深拷贝到内存管理的完整指南

1. 项目概述:为什么我们要“手撕”string类?在C的学习道路上,尤其是从C语言过渡到C的“初阶”阶段,string类绝对是一个绕不开的核心。标准库里的std::string用起来太方便了,、find、substr,几个操作符和函数…

2026/7/25 0:00:35 阅读更多 →
三角洲寻宝鼠工具:高效文件搜索与资源管理实战指南

三角洲寻宝鼠工具:高效文件搜索与资源管理实战指南

1. 先搞清楚“三角洲寻宝鼠”到底是什么工具从名称来看,“三角洲寻宝鼠”更像是一个资源查找或文件检索类工具,而不是游戏或娱乐软件。这类工具的核心价值在于帮助用户快速定位特定资源,比如文档、图片、压缩包或特定格式的文件。如果你经常需…

2026/7/25 0:00:35 阅读更多 →

周新闻

Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/25 5:08:22 阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/25 5:13:53 阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/24 18:52:18 阅读更多 →

月新闻