【算法篇】位运算 —— 基础篇
作者主页作者简要描述算法篇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/10/15 1:26:26 阅读更多 →
大模型“胡说八道”险酿舆情!我干掉外挂向量库,靠人大金仓1条混合SQL让政务RAG准确率飙升40%

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

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

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

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

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

2026/10/2 7:48:22 阅读更多 →

最新新闻

browser-use 实战:让大模型自己操作浏览器的自动化新范式

browser-use 实战:让大模型自己操作浏览器的自动化新范式

最近有几个做自动化测试的同行跟我吐槽,说规则脚本越写越累,目标网站一改版,CSS 选择器就全废了,又要花半天调 xpath。我特别理解这种状态,因为我自己也经历过类似周期:写脚本、上线、跑俩月、网站改版、脚…

2026/10/15 4:56:06 阅读更多 →
制造业PLM落地指南:基础功能、实施顺序与常见误区

制造业PLM落地指南:基础功能、实施顺序与常见误区

做制造业数字化相关工作这些年,一个最常见的场景是:企业高层看到同行上了PLM,图纸不乱扔、变更能追溯到人,于是回来拍板“我们也上一套”。可等项目立项、开始梳理现状数据的时候,往往才发现,公司连同一颗物…

2026/10/15 4:56:06 阅读更多 →
数组类型探秘:从C与Java到Rust,不同语言如何定义同一块内存

数组类型探秘:从C与Java到Rust,不同语言如何定义同一块内存

我记得有次帮同事排查线上数据错乱,折腾到凌晨才定位到根因:不是算法错了,也不是并发问题,而是一个很基础的认知偏差——他把int[5]的数组当作int[10]去用了。这让我重新意识到,数组这个天天打交道的基础结构&#xff…

2026/10/15 4:56:06 阅读更多 →
Java Web综合实战:手写Servlet+JDBC三层架构项目

Java Web综合实战:手写Servlet+JDBC三层架构项目

1. 从零到一:这个综合案例到底在练什么做 Java Web 开发的人,学到一定阶段都会遇到一个尴尬期:单个知识点拆开看都懂,Servlet 会写、JSP 会写、JDBC 能连数据库、Session 也知道怎么用,但真给一个完整需求,…

2026/10/15 4:56:06 阅读更多 →
Keras回归实战:波士顿房价预测与分类任务差异解析

Keras回归实战:波士顿房价预测与分类任务差异解析

1. 从房价预测切入:为什么回归任务是深度学习的另一条腿很多人入门深度学习,第一个接触的都是分类任务——手写数字识别、猫狗分类、情感判断,输出的是离散的类别标签。但真实世界里大量问题要的不是“属于哪一类”,而是“值是多少…

2026/10/15 4:56:06 阅读更多 →
基于Spring Boot的医考答题系统:题库管理、自动评分与错题本实战解析

基于Spring Boot的医考答题系统:题库管理、自动评分与错题本实战解析

做医考答题系统这个项目,前后折腾了大概一个多月。从最开始接到需求、梳理业务,到最终把整套Spring Boot系统跑起来并完成部署交付,中间踩了不少坑,也积累了一些实实在在的经验。今天就把这套医考答题练习系统的设计思路、核心实现…

2026/10/15 4:55:06 阅读更多 →

日新闻

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

1. 为什么选择容器化方式部署 LoRa 网络服务LoRa 物联网项目落地时,网络服务器是整个链路的核心枢纽。它负责接收网关上报的数据包、完成去重与解密、再把有效载荷分发给上层应用。早期大家习惯把网络服务器直接装在物理机上,依赖一堆系统库和特定版本的…

2026/10/15 0:00:46 阅读更多 →
共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

1. 共享推理服务里,扩缩容到底难在哪做过大模型推理服务部署的人,大概都经历过这样的场景:一个团队共用一套推理集群,A 业务跑的是 7B 的小模型,B 业务跑的是 72B 的大模型,C 业务白天流量高、晚上几乎归零…

2026/10/15 0:00:46 阅读更多 →
Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

1. 引子:一次内核恐慌引发的追查先从一个真实场景说起。某次我给一台老旧的嵌入式设备折腾系统裁减,为了把启动时间压进两秒以内,我手贱地把一串自认为“没用”的 systemd 服务给 disable 了,其中就包括systemd-remount-fs.servic…

2026/10/15 0:00:46 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/14 3:30:28 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/14 16:30:29 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/14 3:29:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 0:14:36 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 22:45:47 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 7:53:34 阅读更多 →