那些不得不惊叹的位运算

位运算及简单应用-定义宏取位,置位,清位 1-位运算符 基于二进制位的运算,一定要从二进制角度和补码角度出发考虑 ~ 按位取反,每一位二进制 0 变 1, 1 变 0, 对于int i = 1; ~i的结果? 1的原码和补码为0000 0000 0000 0000 0000 0000 0000 0001 取反其补码为 1111 1111 1111 1111 1111 1111 1111 1110 则~1原码为 1000 0000 0000 0000 0000 0000 0000 0010 所以 ~1 = -2 & 按位与 有一位为0,则 阅读详情

1. 最简单莫过于用移位实现乘除运算了,置位运算也比较简单

    int a=10;
    a>>=1;//a=5;右移=除法,右移一位除以2;
    a<<=2;//a=20;左移=乘法,左移一位乘以2;
2. 循环移位

8个bit的整形循环左移k位

int a=10;//a<=255,8个bit
int b=(a>>k)|(a<<8-k);

8个bit的整形循环右移k位

int a=129;
int c=(a<<k)&255|(a>>8-k)


3.^(异或)运算,计算反码

unsigned char a=254;
a^=255;



4. x=x&(x-1)//将x最低位的1置0;

//判断是否为2的整数次方
int Is2Pow(int x)
{
    if( (x&(x-1)) == 0 ) return 1;
    else return 0;
}

//统计x中1的个数
int countx = 0,x=15;
    while(x)
    {
          countx ++;
          x = x&(x-1);//每次把最低位1置0
     }
  cout<<countx<<endl;


5.异或实现,两个存储单源,交换元素

int a=2,b=3;
a=a^b;
b=a^b;
a=a^b;
用加减法实现

a=a+b;
b=a-b;
a=a-b





Python位运算从入门到进阶:4 大经典例题(含 8 种解法详解)+ 实战技巧避坑指南 本文围绕 Python 位运算展开,从基础概念(按位与、或、异或等)入手,通过四道经典例题(判断一个数是否为 2 的幂、找出数组中只出现一次的数字、计算两个整数的和、生成格雷编码)进行实战解析,对比常规解法与位运算解法,凸显位运算在代码简洁性和效率上的优势。如判断 2 的幂,位运算解法仅需一行代码;找只出现一次的数字,位运算通过异或特性无需额外空间。文中还分享了快速取模、找二进制最右边的 1 等实战技巧,提醒右移符号位处理、位运算优先级等常见误区,助力读者掌握位运算这一高效编程工具。 阅读详情

相关推荐

位运算详解之移位运算的神奇操作

移位运算作为位运算的重要分支,从简单的数据缩放,到复杂的加密算法、硬件模拟,都展现出令人惊叹的神奇效果。本文我将深入介绍移位运算的原理、分类及各种神奇操作

1317

循环移位计算

以8bit为例: bit7、bit6、bit5、bit4、bit3、bit2、bit1、bit0 循环移位即:将一端移出的bit从另一端移入; 循环左移 1bit 第一步:左移一位 第二步:右移七位 第三步:前两步结果按位或 对应代码:data = (data >> 1) | (data  结果:bit0、bit7、bit6、bit5、bit4、bit3、bit2、bit1

record_cheng的专栏 835

从CSAPP DataLab看计算机底层:位运算如何模拟高级语言特性(如三目运算符、逻辑非)

本文通过CSAPP DataLab实验,深入探讨了位运算如何模拟高级语言特性(如三目运算符、逻辑非)。以conditional、logicalNeg和isLessOrEqual函数为例,揭示了位运算与高级语言抽象之间的精妙映射关系,帮助读者理解计算机底层设计原理。

weixin_30908103的博客 503

C语言位运算操作整理记录

位操作相关的C语言使用

qq_30058483的博客 556

C语言中常见的置位操作

本文介绍了3种C语言中将某一位置位的简便方法。

Nornir自动化简单介绍-网络设备信息收集

作为网工,学会通过执行脚本,可以自动化的完成日常一些设备相关配置或信息收集等工作,可以说是事半功倍。 Nornir就是这样一个自动化网络运维工具。按照官网上的说明: Nornir是用python编写的自动化框架,可与python一起使用。Nornir旨在通过提供一个纯Python框架来解决这些问题。 详细参考: Github GitHub - nornir-automation/nornir: Pluggable multi-threaded framework with inventory .

Gun&rose 7804

如何对某一位置0或者置1?

如何对某一位置0或者置1?方法一:写成宏,方便移植#define setbit(x,y) x|=(1#define clrbit(x,y) x&=!(1 方法二:C语言位运算除了可以提高运算效率外,在嵌入式系统的编程中,它的另一个最典型的应用,而且十分广泛地正在被使用着的是位间的与(&)、或(|)、非(~)操作,这跟嵌入式系统的编程特点有很大关系。我们通常要对硬件寄存器进行位设置 譬如,我们通过将

1万+

GEO优化实战:用AnswerBit量化AI搜索可见度与品牌监控体系

生成式引擎优化(GEO)正取代传统SEO,成为品牌在AI搜索生态中获取可见度的关键。当用户习惯从“翻列表”转向“直接问AI”,品牌能否被生成式引擎识别、引用并正向推荐,直接决定了其在用户决策链条中的存在感。AI搜索可见度因此从模糊概念演变为可度量的运营指标,涵盖提及率、引文率、情感分与回源质量等维度。腾讯AnswerBit作为答案侧分析工具,帮助运营者拆解AI回复中的品牌语境与引用来源,让优化动作有据可循。从内容结构化改造、品牌实体建设到第三方权威背书,GEO要求团队建立“度量-优化-再度量”的闭环。文章结

weixin_31100517的博客 150

循环移位:循环左移和循环右移

&nbsp; &nbsp; &nbsp; &nbsp;循环移位就是把数值变成二进制,然后循环移动的过程;换句话说,循环移位就是将移出的低位放到该数的高位(循环右移)或把移出的高位放到该数的低位(循环左移),左移,和右移动都是对整数进行的操作,在Win32控制台应用程序中,整形占4Byte节32bit。 &nbsp; &nbsp; &nbsp; &nbsp;循环左移的过程: &nbsp;...

Keep Fighting All The Time 8万+

OmniQuant:全方位校准实现大语言模型高效量化与移动端部署

模型量化是一种通过降低模型权重和激活值的数值精度来压缩模型大小、减少内存占用和计算开销的核心技术。其原理在于将高精度浮点数映射到低精度整数表示,从而在保持模型性能的同时,显著提升存储和计算效率。这项技术的价值在于,它使得大规模语言模型能够在消费级硬件和资源受限的移动设备上运行,极大地拓宽了AI应用场景。OmniQuant作为一项前沿的量化技术,通过引入可学习权重裁剪和可学习等价变换机制,实现了对权重分布不均匀和激活值异常值问题的协同优化,从而在极低的比特数下仍能保持优异的模型性能。本文深入探讨了OmniQu

weixin_30719711的博客 484

Stata实战:5步搞定PSM倾向得分匹配(附完整代码与常见报错解决)

本文详细介绍了使用Stata进行PSM(倾向得分匹配)的5步实战流程,包括数据预处理、模型构建、匹配算法选择、匹配质量诊断和结果解释。提供完整代码示例和常见报错解决方案,帮助研究者高效完成实证分析,提升匹配成功率。

weixin_29214559的博客 590

膛目结舌的代码技巧!一看就是冷暴力~~~~

每个编程语言都有其独特的特性和技巧,通过不断学习和实践,我们可以不断提升自己的编程技能,创造出更加高效、灵活和优雅的代码。以上只是一些常见的膛目结舌的代码技巧,实际上还有很多其他的技巧和方法。在编程过程中,不断学习和探索新的技巧,可以提高自己的编程水平,写出更加优雅、高效的代码。冷暴力的代码技巧,也被称为"膛目结舌"的技巧,是指那些巧妙、高效、令人惊叹的代码实现方式。Python:以其简洁明了的语法和强大的库支持而著名,Python中的列表推导式和生成器表达式是两种非常巧妙的代码技巧。

zrc_xiaoguo的博客 992

优快云 付费专栏连载第 3 篇|Cadence Allegro 8 层板布局实战教程:RK3568 硬件模块化分区布局,DDR4 内存约束区域设置、布局禁忌避坑指南

本文是 RK3568 8 层板高速 PCB 设计实战专栏的第 3 篇,聚焦 DDR4 布局阶段的核心方法论与 Allegro 实操。文章从布局前 6 项前置检查清单入手,系统讲解模块化分区布局的五大黄金原则,并给出 160mm×100mm 样板的 5 大功能分区实战案例。随后以图文步骤演示如何在 Allegro 中创建 ROOM_DDR4 与 ROOM_CPU 约束区域,并强调 Hard Room 硬约束的强制校验作用。

weixin_44520581的博客 1732

令人惊叹的代码技巧

使用函数式编程的一些特性,比如高阶函数、匿名函数和Lambda表达式,可以使代码更为简洁、易读。特别是在处理集合和数据流时,函数式编程的风格往往能够以更优雅的方式表达代码逻辑。元编程是指在运行时操作程序的编程范式,通过改变代码自身的结构来实现一些高级的功能。递归是一种非常强大的编程技巧,能够以简洁的方式解决一些复杂的问题。一些高效的算法和数据结构利用了位操作,例如使用位掩码进行状态管理,或者通过位运算来实现快速的乘法和除法。在编程世界中,有一些令人惊叹的代码技巧和巧妙的实现方式。

m0_62645012的博客 460

Python爬虫实战:使用Scrapy+Playwright高效爬取全球专利数据库

本文将详细介绍如何使用Python最新技术栈(Scrapy+Playwright)构建一个高效的专利数据库爬虫系统。我们将从爬虫基础知识讲起,逐步深入到反爬应对策略、分布式爬虫架构以及数据存储方案,最终实现一个完整的专利数据采集系统。专利数据是技术创新领域的重要信息资源,包含技术描述、权利要求、申请人信息等宝贵数据。中国国家知识产权局(CNIPA)美国专利商标局(USPTO)欧洲专利局(EPO)世界知识产权组织(WIPO)

2201_76125261的博客 1382

YOLOv8集成EMA注意力机制YOLOv8完整教程 将EMA注意力机制集成到YOLOv8框架中

YOLOv8教程这篇文章介绍了如何将EMA(高效多尺度注意力)机制集成到YOLOv8目标检测框架中。YOLOv8 EMA注意力机制通过多尺度特征融合和高效计算,能够提升模型对关键特征的关注能力。文章详细解析了EMA的原理和结构设计,包括其核心组件和前向传播过程。此外,提供了完整的实现指南,包括环境准备、项目结构设置、EMA模块代码实现(包含分组处理、空间注意力计算和特征融合等关键步骤)。YOLOv8 YOLOv8 YOLOv8 YOLOv8 YOLOv8

FJN110的博客 925

位运算实际运用

前言:1.位运算1.1 & 按位与1.2 << 左位移2.二进制运算业务逻辑分析 前言: 日常开发中位运算不是很常用,但是巧妙的使用位运算可以大量减少运行开销,优化算法。 今天在翻看公司业务代码时发现一个功能模块中有运用到很多的二进制位运算来进行业务操作,心中不禁惊叹,牛人啊!后来经过领导的指点,自己也开始了解其中逻辑,特写下此文,记录并分享。 1.位运算 &:按位与。 |:按位或。 ~:按位非。 ^:按位异或。 <<:左位移运算符。 >>:右位移运算.

Marikty的博客 964

LeRobot 机器人学习(Robot Learning)教程(二)经典机器人学

本文探讨了机器人学中基于学习的方法与传统动力学方法的对比与发展趋势。文章指出,传统方法依赖精确的动力学模型和大量人工调参,面临跨任务泛化能力弱、工程复杂度高、物理建模局限性等问题。随着机器学习技术的进步和机器人数据集的丰富,基于学习的方法展现出三大优势:(1)能够实现跨任务与实体的泛化;(2)降低对人类专业知识的依赖;(3)利用历史数据优化性能。文中以平面机械臂为例,分析了传统逆运动学方法的计算复杂性和环境适应性挑战,并指出基于学习的方案在处理高维感知输入、复杂接触动力学等方面具有明显优势。文章认为,结合物

2506_90492529的博客 1066

【夜深人静学数据结构与算法 | 第五篇】 位运算技巧

相信你会惊叹于位运算奇妙的应用场景,感叹于前辈们的脑洞之大。今天我们将带领大家学习。

fckbb的博客 614

jre9下载 jdk9

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

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

excel二进制移位运算_Excel揭秘13:在Excel中实现位运算

我们知道,计算机使用的是二进制计数法。也就是说,在计算机中的所有信息都是使用二进制来存储和处理的。下表列出了我们熟悉的十进制数及与其相对应的二进制数:位运算规则在位运算中,“按位与”运算(AND运算)分别按位比较两个相应的数字(0或1),当且仅当这两个数字都为1时,结果才为1,如下式所示:可以看出,实现“按位与”运算,就是将对应位置的数相乘。因此,从右自左的第1个位置是1*1=1,第2个位置是0*...

weixin_42298105的博客 7315

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

初入力扣,让人惊叹的算法

声明用的python语言 第一题: 颠倒二进制位 输入: 32为无符号二进制数如000010111(这里就只写这几位) 输出: 111010000 方法一:移位+拼接 def reverseBits(n): result = '' # 32位所以循环32次 for i in range(32): end = n & 1 # 这里其实是在求二进制n的最后一位 ''' ...

weixin_43346223的博客 256

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

利用ASCII码与位运算异或进行大小写转换(ASCII码两组大小写字母间为何隔着6个字符)

传统方法进行大小写转换 if(ch >= 'a' && ch <= 'z') ch -= 32; if(ch >= 'A' && ch <= 'Z') ch += 32; 有时候记不住32这个数字,还要去翻一翻ASCII码表看一下,而且实在是搞不懂为什么两组大小写的26个字母不连在一起呢? 而且中间为什么偏偏隔了6个字符? 观察一下以下的A...

eddie's Blog 4860

嵌入式系统中的位运算魔法:如何用微操作解决宏观工程问题

本文探讨了嵌入式系统中位运算的高效应用,重点介绍了如何通过单片机中的位操作(&、|、~、^)优化内存使用、硬件寄存器控制和通信协议处理。通过实际案例展示了位运算在资源受限环境下如何显著提升系统性能和降低功耗,为嵌入式开发提供实用的工程解决方案。

pea55的博客 647

从CSAPP的DataLab实验,聊聊那些让你“拍大腿”的位运算奇技淫巧

本文深入解析CSAPP的DataLab实验,揭示位运算在计算机系统中的精妙应用。从德摩根定律到浮点数处理,通过实战代码展示如何用位操作解决复杂问题,提升算法效率。特别探讨了位运算在面试题目和现代CPU优化中的实际价值,是理解计算机底层原理的绝佳指南。

weixin_30268921的博客 191

从if-else到规则表:用表驱动重构写出让同事惊叹的代码

在软件工程实践中,代码可维护性是衡量工程质量的核心指标之一。面对纷繁复杂的业务逻辑,开发者常陷入if-else嵌套的泥潭,导致代码难以阅读、测试和扩展。表驱动编程作为一种经典设计思想,通过将条件与行为映射为数据结构,显著降低逻辑复杂度,提升代码的可读性与可测性。它广泛应用于规则引擎、状态机、策略模式等场景,是应对高频业务变化的有效手段。本文从一次优惠计算重构案例出发,展示如何将一二百行条件分支收敛为一张规则表,并探讨特征测试、小步提交及团队规矩对保障重构安全的价值。理解并运用这一模式,不仅能消除代码腐烂,更

weixin_32932149的博客 62

从“按位”视角出发:巧用位运算高效定位序列首尾1的硬件实现

本文深入探讨了如何利用位运算高效定位二进制序列中的第一个1和最后一个1的硬件实现方法。通过Verilog代码示例和详细解析,展示了位运算在数字电路设计中的低延迟和高效率优势,适用于优先级编码器、数据包解析等场景,显著提升硬件性能。

weixin_30719711的博客 403
上一篇: 收藏的一些链接(以备后查)
下一篇: Kruskra算法求最小生成树
WayToAccept
博客等级 码龄14年 21粉丝 56原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值