0
点赞
收藏
分享

微信扫一扫

C语言左移位符号 << 结合 =| 实现置位操作

左手梦圆 2022-02-21 阅读 48

今天看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;   //2
    int b = 0x1 << 2;   //4
    int c = 0x1 << 3;   //8
    int d = 0x1 << 4;   //16
    int e = 0x1 << 5;   //32
    int f = 0x1 << 6;   //64
    int g = 0x1 << 7;   //128
    int h = 0x1 << 8;   //256
    int i = 0x1 << 9;   //512

    return 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);  //1
    b |= (0x1<<1);  //2
    c |= (0x1<<2);  //4
    d |= (0x1<<3);  //8
      
    return 0;
}

有什么用?(根据某大佬的回答。。。)

参考文章1:C语言为什么要左移位<<?

参考文章2:KYSL 海康摄像头 HEOP报警组件集成开发指南.pdf

举报

相关推荐

0 条评论