C语言左移位符号 << 结合 |= 实现置位操作
今天看hk文档,有一串代码不是很懂什么意思:
alarm_msg.alarm_linkage.trigger_record_chan |= (0x1 << 1); /* bit1 - record the first channel (为什么要这么操作?)*/
首先x << k = x ^ k
,如:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>int main() {int a = 0x1 << 1; //2int b = 0x1 << 2; //4int c = 0x1 << 3; //8int d = 0x1 << 4; //16int e = 0x1 << 5; //32int f = 0x1 << 6; //64int g = 0x1 << 7; //128int h = 0x1 << 8; //256int i = 0x1 << 9; //512return 0;
}
再用=|
符号可以实现让得某位置1:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>int main() {int a = 0;int b = 0;int c = 0;int d = 0;a |= (0x1); //1b |= (0x1<<1); //2c |= (0x1<<2); //4d |= (0x1<<3); //8return 0;
}
有什么用?(根据某大佬的回答。。。)
这个整数的 bits 被视为开关,英文可能为 composite flags 或者 flags。中文可能被翻译成组合值。比如一个 uint32_t 可以表示 32 个相互独立的开关。还有一种是从 1,2,3,4,5 这样一直连续递增的数值(这种整数只看它的整体实际数值,某个 bit 没有任何物理意义),这个应该怎么叫我也不记得了,可能没什么叫法。注意这两者的区别。还有的整数的 bits 被分段划分为同时有以上两种用法(根据设计者的设计)。
参考文章1:C语言为什么要左移位<<?
参考文章2:KYSL 海康摄像头 HEOP报警组件集成开发指南.pdf
C语言左移位符号 << 结合 |= 实现置位操作相关推荐
- C语言中的左移位和右移位
移位操作只是简单地把一个值的位向左或右进行移动. 1. 左移位 符号:<< 在左移位中,之最左边的几位被丢弃,右边多出来的几个空位则由0进行补齐. 例如:01101101 << ...
- C语言基础位运算符号
C语言基础位运算符号 1.<< 左移 00011000 << 3 = 11000000(便携的赋值方法:<<=) 2.>> 右移 00100100 &g ...
- c语言左边自动补零,c语言左移4,余位补零 时不时乘以16?
c语言左移4,余位补零 时不时乘以16?以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! c语言左移4,余位补零 时不时乘 ...
- 符号位处理方式 c语言,C语言位域解析符号位扩展规则
从一个例子说起: int main(void){ union{ int i; struct{ char a : ; char b : ; char c : ; }bits; }num; printf( ...
- C语言单片机位运算——看完马上懂(个人总结)
位运算: 0XF => 1111 0XF0 => 1111 0000 0X0F0F=0XF0F => 1111 0000 1111 &(与): C语言 ...
- c语言位运算负数的实例_一招教你学会C语言中位运算
程序中的所有数在计算机内存中都是以二进制的形式储存的.位运算说穿了,就是直接对整数在内存中的二进制位进行操作.注意,位运算只针对于整数进行操作. 运算符号 运算规则 1.&与运算:对应两个二进 ...
- 常见位操作及运算应用举例:1,C语言中位运算符异或“∧”的作用2,异或运算的作用3,(与运算)、|(或运算)、^(异或运算)
1 C语言中位运算符异或"∧"的作用: 异或运算符∧也称XOR运算符.它的规则是若参加运算的两个二进位同号,则结果为0(假):异号则为1(真).即0∧0=0,0∧1=1,1∧1=0 ...
- c语言中各个符号的意义及作用是什么,C语言特殊符号意义
初学者可以来学学,包教包会 C语言中像%D &%f符号的作用说一下 最佳答案 C语言中的符号 运算符的种类C语言的运算符可分为以下几类: 1.算术运算符 用于各类数值运算.包括加(+).减(- ...
- c语言中0x11是多少,C语言中的符号
C语言中的符号 运算符的种类C语言的运算符可分为以下几类: 1.算术运算符 用于各类数值运算.包括加(+).减(-).乘(*).除(/).求余(或称模运算,%).自增(++).自减(–)共七种. 2. ...
最新文章
- 【jstl】jstl的基本操作
- 写给云栖社区在做网站的朋友一点干货
- EIGRP-2(EIGRP的路由认证)
- Xamarin Essentials教程使用加速度传感器Accelerometer
- 这样配置,让你的 IDEA 好用到飞起来!
- 【Android FFMPEG 开发】Android 中执行 FFMPEG 指令 ( 集成 FFmpegAndroid 框架 )
- Chap2-构造函数语意学
- resolv.conf
- Jtopo对象属性大全
- mysql recordcount_Filter 和 RecordCount 属性示例 (VB)
- ELK抓取AWS-ELB日志的logstash配置文件
- HIVE中 ROW_NUMBER() OVER() 函数
- 如何快速将小写字母转变为大写
- 如何将卫星影像或者航拍影像叠加到CAD设计图上(Auto CAD版)
- 高数 | 洛必达法则的隐藏细节、广义洛必达法则(分母无穷直接洛必达)使用条件
- Unity3D Android接入FCM推送
- 《人物五官morpher制作工艺》
- mysqladmin的用法简介
- 3_按钮开关控制的计算机串口通信
- 2023值得入手的小米电视推荐 小米75寸电视哪款性价比高?