如何对Bit进行置位、复位和取反操作

【位运算进阶之----按位取反(~)】(附补码,原码讲解) ✨原码是一种用二进制表示有符号整数的编码方式。其中,最高位表示符号位0为正1为负。其余位是数值位,表示数值的绝对值。举个“栗子”来说:1的原码是:001;-1的原码是:101;✨我们可以看出,互为相反数的两个数的原码,除了第一位的符号位不一样以外,其余位都相同。(那么,可能有聪明的小伙伴们就想到了0,是不是0也有两种表达方式呢?果然聪明!在原码中,0和-0的表示是不一样的。✨补码也是一种用于表示有符号整数的编码方式。其中,最高位(最左侧位)是符号位0表示正数,1表示负数。其余位是数值位。 阅读详情

置位操作

使用位操作OR(|)操作符去设置某个bit位为1.

number |= 1UL << n;

将number的第n位置1,n从0开始.
如果number超过unsigned long长度,则使用1ULL << n.

复位操作

使用位操作AND(&)操作符去设置某个bit位为0.

number &= ~(1UL << n);

将number的第n位置0,n从0开始.

取反操作

使用位操作XOR(^)操作符去设置某个bit位取反。

number ^= 1UL << n;

将number的第n位取反.

获取操作

将number右移n位,然后使用AND操作符相与.

bit = (number >> n)& 1U;

这将获取number第n位的值存储到bit中。

C语言的位操作 - bit 、byte的清零,置1,提取,判断 首先,以下是按位运算符:在嵌入式编程中,常常需要对一些寄存器进行配置,有的情况下需要改变一个字节中的某一位或者几位,但是又不想改变其它位原有的值,这时就可以使用按位运算符进行操作。下面进行举例说明,假如有一个8位的TEST寄存器:bit1~bit7,如果这高7位没有用到的话,这么设置没有什么影响;但是,如果这7位正在被使用,结果就不是我们想要的了。在这种情况下,我们就可以借用按位操作运算符进行配置。 阅读详情

相关推荐

bit的置位,复位与测试

在C++中,有bitset类,可以作为bit的使用,下面进行如何利用32位的int型整数来进行位操作 首先声明需要存放的位数: #define N 10000000 每一个int存放32位 #define BITSPERWORD 32 #define SHIFT 5 #defien MASK 0x1f 存的内存空间 int a[1+N/BITSPERWORD] voi

问路的博客 1900

按位移操作

将第N位置为1 1UL << N 将第N位置为0 tmp &= ~(1UL<<N)

分享嵌入式,移动端,智能应用,数据库等专业板块,记录知识碎片!!! 479

labview实现异或运算_LABVIEW的深入探索之功能强大的位操作能力

学习过C语言的朋友们都知道,每当我们谈起C语言的优势时,强大的位操作能力是不能不提的,正是因为C语言具有强大的位操作能力,使得C语言广泛用于开发操作系统和嵌入式应用中。LABVIEW作为面向具体应用的工程师的编程语言,由于经常需要操作硬件设备寄存器,而寄存器往往都是需要位操作的,因此LABVIEW具有位操作能力是必须的。LABVIEW不仅具有强大的位操作能力,而且操作极其方便,这得益于LABVIE...

weixin_39572442的博客 959

511遇见易语言位运算命令位取反、位于、位或、位异或

比特位 比特位就是转换成二进制之后每一位数,bit中文名称是位,音译“比特”,是用以描述电脑数据量的最小单位。 bit 来自binary digit (二进制数字) 二进制数系统中,每个0或1就是一个位(bit)。 1是1,2是10 1的第一个比特位的值是1 2的第一个比特位的值是0,第二个比特位的值是1(从右往左)。2要用两个比特位。 一个比特位只能存下一个值,所有他只有两种状态。1或0,就是存有值或没有值。 比特位=比特=位,都是指bit这个单位。 bit,Kb,mb,gb,都是单位。 1、位取反

511遇见 5943

2-5技术升级:用宏定义来完成位运算

注意:对于这些比较复杂的宏,不要想着能一下子就把它写出来,而是应该先试图去理解它。 2.5.1直接用宏来置位(置1)、复位(清0)(最右边为第一位) #include<stdio.h> //第一题:用宏定义将32位数x的第n位(右边起算,也就是bit0算第一位)置位; //U表示1是无符号的,有符号的1和无符号的1只有在右移的时候有区别,左移是没有区别的。 #define SET_BIT_N(x,n) (x | ((1U)<<(n-1))) //第二题:用宏定义将32位数x的第n

成长的博客 367

PLC八路抢答器程序设计:沿检测、置位复位与仲裁机制解析

PLC位逻辑指令是工业自动化的基础。在扫描周期中,CPU通过输入映像区读取信号,而沿检测指令利用M区存储上一次状态,将按钮的瞬时变化转化为稳定的置位/复位信号。结合置位优先与复位优先触发器,可以构建可靠的互锁与仲裁逻辑。在抢答器这类典型场景中,各选手按钮独立输入,系统需保证先按者锁定为唯一,后按者无效。借助系统存储器字节与时钟存储器,还能实现1Hz闪烁与初始化复位。从三路扩展到八路时,地址冲突与同一扫描周期的多条件仲裁成为关键。基于S7-1200博途环境,给出八路抢答器的完整实现方案,并解析沿检测M_BIT

weixin_29184371的博客 228

仓颉位运算详解:从二进制/十六进制转换到置位与复位实战——《仓颉编程基础及应用》配套教程

计算机内的数据存储与操作永远是二进制的。本篇基于《仓颉编程基础及应用》配套开源仓库中的在线扩展阅读资料与随书示例源码,系统讲解仓颉语言(Cangjie)的位运算体系:位权与二进制/十六进制互换规则、按位取反 `!`、按位与 `&`、按位或 `|`、按位异或 `^`、左移 `<<` 与右移 `>>` 六大操作符的语义与陷阱,并给出可复制运行的置位(set bit)与复位(reset bit)实现。读

gitblog_00616的博客 190

在运行opencv时出现的两个问题:AttributeError: module ‘cv2‘ has no attribute ‘gapi_wip_gst_GStreamerPipeline‘

解决了opencv的两个问题:由问题一引出 AttributeError: module 'cv2' has no attribute 'gapi_wip_gst_GStreamerPipeline' cv2.error:OpenCV(4.1.2)C:\projects\opencvpython\opencv\modules\highgui\src\window.cpp:717:error: (-2:Unspecified error) The function is not implemented...

hu_yinghui的博客 3274

Stm32-GPIO口学习笔记

【代码】Stm32-GPIO口学习笔记。

ZJQJI的博客 113

从Transformer到蛋白质结构预测:手把手解读ESM系列模型的核心原理与实战价值

本文深入解析了ESM系列模型如何将Transformer架构创新应用于蛋白质结构预测,揭示了其从氨基酸序列到三维结构的高效预测机制。通过掩码语言模型预训练和注意力机制,ESM模型不仅捕捉蛋白质序列的远程相互作用,还在蛋白质工程改造、药物发现等领域展现出巨大实战价值,显著提升了结构预测速度和精度。

weixin_28744423的博客 318

Anylogic试用版密匙

#$%99dTMbLIj+hm/c9fn0suWlfQjdK9FzRH8oSbR Rbm3FEeONkF5mDLKHxhscEDBANDg4BSU2Oi6hErk TH/KzwiCtsM0jfD50uRsj60+gi9ifTlduwcpSr6a GtVSilXwF997xTVAoMLddqOzGQAbnSjBiJOBdm1Z 0QwwIEJynvYgckLfoEADzncIgNnJjYshWcmGh3s9 gTgyuQPlRBeTXfb+ZJPI1JGi4sAUljwdB53Df+AX SEf5FaIbih

qq_43939616的博客 8265

用宏定义来完成位运算(置位,复位,截取)

1、用宏定义来完成位运算 1、置位    置位特定位n:#define   SET_NTH_BIT(x, n)   ( x | ((1U) 置位n到m位: #define  SET_BIT_N_TO_M(x,n,m) (x | (~((~0u)<<(m-n+1)))<<(n-1)) 分析: 第一步:(  (~0u)  运行结果是等到0到(m-n+1)位是0,(m-n+2)到3

一路向阳,春暖花开 6740

2.13寸电子墨水屏HINK-E0213+esp8266

很久以前买的一块电子墨水屏,运气很好,这个型号HINK-E0213资料很全,而且微雪官网也有相关电路资料等。

梦境虽美,却不长. 3002

寄存器位_置0或置1操作

寄存器位_置0或置1操作

weixin_41226265的博客 1818

【计算机视觉 | MMDetection】关于mmdetection如何计算参数量、计算量和速度FPS

【计算机视觉 | MMDetection】关于mmdetection如何计算参数量、计算量和速度FPS

wzk4869的博客 3021

Microsoft AI SDK 与 SAP ABAP:让企业级 AI 能力触手可及的深度整合指南

借助 Microsoft AI SDK,ABAP 开发者无需跳出熟悉的事务码与数据字典,就能把 GPT‑4 的强大语言理解与生成能力深度植入采购、销售、财务等核心业务流程。只要掌握“初始化 SDK → 构造 Prompt → 解析输出”这一范式,未来无论 Azure OpenAI、OpenAI 还是本地化 LLM,都能在同一套代码骨架内快速切换,实现真正的“AI 即服务”。现在,就让我们在下一行 ABAP 里拥抱智能未来。参考链接均于 2025‑07‑22 提取,推荐读者结合实际版本进一步验证。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 431

第五章:(2)S7-200 SMART PLC基本指令

位逻辑 关于置位和复位指令是这样用的:上面那个bit写地址,下面的N是写你要连续置位或者复位的位数。例如下面的那个梯形图,他是从Q0.0开始,连续置位两位,也就是从Q0.0开始到Q0.1,两位都置一,然后下面的R也是,从这个脉冲开始,连续两位置零。 置位优先和复位优先双稳态触发器指令 这个和数电那个RS触发器是一样的 bit是地址,然后看表格 SR置位优先 R S bit OUT 1 1 1 1 0 1 1 1 1 0 0 0 0 0 不变 不变 RS复位优先

JANHOW的博客 2万+

Hermes 教程 03:Skills 系统

摘要:Hermes Skills是一种自我改进机制,可将解决问题的经验保存为可复用技能文档。v0.13.0版本遵循agentskills.io开放标准,与Claude Skills互通。技能创建流程包括发现问题、创建技能文件、加载使用和优化更新四个阶段。系统提供技能检索和自维护机制(Curator),支持技能媒体路由和多种管理命令。内置技能涵盖开发调试、创意头脑风暴等场景,通过积累技能使Hermes更适应用户需求。

程序猿_三产 728

C语言位操作

C语言中位操作 1、常用的位运算符 2、特定位操作 3、宏定义完成位运算

邓博学习笔记 3831

RT-DETR算法优化改进:轻量级上采样CARAFE算子 | 注意力机制大作战

上采样操作CARAFE,具有感受野大、内容感知、轻量级、计算速度快等优点,引入RT-DETR二次创新;1)代替Upsample进行使用;

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 1265

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

【C语言】宏定义实现位运算

一、常用位操作符 1.1 位与& 真值表 & 1 0 1 1 0 0 0 0 特点 有0为0,全1为1 1.2 位或| 真值表 | 1 0 1 1 1 0 1 0 特点 有1为1,全0为0 1.3 位异或^ 真值表 ^ 1 0 1 0 1 0 1 0 特点 相同为0,相异为1 1.4 位取反~ 位取反是将操作数...

baymaxly的博客 4657

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

位操作符以及在操作寄存器中时的作用

一、位操作符 1、位与& (1)注意:位与符号是一个&,两个&&是逻辑与。 (2)真值表:1&0=0 1&1=1 0&0=0 0&1=0 (任何数,其实就是1或者0)与1位与无变化,与0位与变成0 2、位或| (1)注意:位或符号是一个|,两个||是逻辑或。 (2)真值表:1|0=1 1|1=1 0|0=0 0|1=1 ...

wwwlyj123321的博客 1413

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

《C语言笔记:位操作相关》

一,位操作一般用法   1,特定位清零用“&”。     要想把一个数的特定位清零,就需要构造另一个数,这个数的对应特定位为0,其他位为1。2   2,特定位置1用“|”。     要想把一个数的特定位置1(设置特定位),就需要构造另一个数,这个数的对应特定位为1,其他位为0。   3,特定位取反用“^”。     要想把一个数的特定位取反,就需要构造另一个数,这个数的对应特定位...

qq_40709487的博客 272

嵌入式中C语言的位操作

C语言位操作对寄存器特定位进行操作寄存器特定位清零使用&寄存器特定位置取1使用|寄存器特定位取反使使用^位运算构建特定的二进制数使用移位获取特定位为1的二进制数结合位取反获得特定位为0的二进制数技术升级:使用宏定义完成位运算使用宏定义进行置位使用宏定义进行复位截取变量的部分连续位总结 对寄存器特定位进行操作 寄存器特定位清零使用& 在操作中使用&将寄存器某些 特定位变成0,但是不影响其他位,可以进行如下操作,假设原来的寄存器REG1中的值为0xAAAAAAAA,希望将bit8-bit

zxfaxjy的博客 975

寄存器位操作方法

或者 a &= (~(0x1ff<<15) | ~(0x07<<3));或者 a |= ((0x1ff<<15) | (0x07<<3));//这个宏分为2部分:(x & ~(~(0U)<<(m-n+1))<<(n-1)) >> (n-1)a |= (937<<7);a = a | (0b11111<<3) 或者 a |= (0x1f<<3);

weixin_48867130的博客 809

labview实现异或运算_LABVIEW的深入探索之功能强大的位操作能力 来自 csxcs366的博客...

学习过C语言的朋友们都知道,每当我们谈起C语言的优势时,强大的位操作能力是不能不提的,正是因为C语言具有强大的位操作能力,使得C语言广泛用于开发操作系统和嵌入式应用中。LABVIEW作为面向具体应用的工程师的编程语言,由于经常需要操作硬件设备寄存器,而寄存器往往都是需要位操作的,因此LABVIEW具有位操作能力是必须的。LABVIEW不仅具有强大的位操作能力,而且操作极其方便,这得益于LABVIE...

weixin_35740875的博客 1091
上一篇: 用Printf在控制台打印带颜色的消息
下一篇: C++代码里增加调试打印消息
照书抄代码
博客等级 码龄8年 32粉丝 50原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值