日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發(fā)布時(shí)間:2025/3/20 编程问答 12 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C语言左移位符号 << 结合 |= 实现置位操作 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

今天看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; }

再用=|符號(hào)可以實(shí)現(xiàn)讓得某位置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; }

有什么用?(根據(jù)某大佬的回答。。。)

這個(gè)整數(shù)的 bits 被視為開關(guān),英文可能為 composite flags 或者 flags。中文可能被翻譯成組合值。比如一個(gè) uint32_t 可以表示 32 個(gè)相互獨(dú)立的開關(guān)。還有一種是從 1,2,3,4,5 這樣一直連續(xù)遞增的數(shù)值(這種整數(shù)只看它的整體實(shí)際數(shù)值,某個(gè) bit 沒有任何物理意義),這個(gè)應(yīng)該怎么叫我也不記得了,可能沒什么叫法。注意這兩者的區(qū)別。還有的整數(shù)的 bits 被分段劃分為同時(shí)有以上兩種用法(根據(jù)設(shè)計(jì)者的設(shè)計(jì))。

參考文章1:C語言為什么要左移位<<?

參考文章2:KYSL 海康攝像頭 HEOP報(bào)警組件集成開發(fā)指南.pdf

總結(jié)

以上是生活随笔為你收集整理的C语言左移位符号 << 结合 |= 实现置位操作的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。