久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
聽說C語言共用體位域操作比位移操作快
[打印本頁]
作者:
a185980800
時間:
2024-4-11 21:13
標題:
聽說C語言共用體位域操作比位移操作快
如題聽說共用體位域操作比位移操作快。下面這個是我現在用的位操作函數
//*******************************************************************/
//功能:二進制數位寫入
//形參:shu:待操作的數。wei:要寫入第幾位(從右到左是0——7位)weiC:為0時寫入0. 為1時寫入1
//返回:無
//詳解:
//*******************************************************************/
uint16 uintwei_xie(uint16 shu,unsigned char wei,bit weiC)//功能:二進制數位寫入
{
if(weiC == 0)
{
return shu & (~(0x0001<<wei));
}
else
{
return shu | (0x0001<<wei);
}
}
#endif
復制代碼
換成共用體不用函數直接讀寫其實快,但是不能用變量來指定操作哪一位了,下面是寫出函數的調用。
因為要調用函數還要
switch ()一次,很懷疑還有必要搞嘛。
#include <REG51.H>
// 定義一個通用的共用體
typedef union {
uint16_t value16;
struct {
bit bit0;
bit bit1;
bit bit2;
bit bit3;
bit bit4;
bit bit5;
bit bit6;
bit bit7;
bit bit8;
bit bit9;
bit bit10;
bit bit11;
bit bit12;
bit bit13;
bit bit14;
bit bit15;
} bits16;
} BitField;
// 設置指定位的值
void setBit(uint16_t *data, int index, bit value) {
BitField *bf = (BitField *)data;
switch (index) {
case 0: bf->bits16.bit0 = value; break;
case 1: bf->bits16.bit1 = value; break;
case 2: bf->bits16.bit2 = value; break;
case 3: bf->bits16.bit3 = value; break;
case 4: bf->bits16.bit4 = value; break;
case 5: bf->bits16.bit5 = value; break;
case 6: bf->bits16.bit6 = value; break;
case 7: bf->bits16.bit7 = value; break;
case 8: bf->bits16.bit8 = value; break;
case 9: bf->bits16.bit9 = value; break;
case 10: bf->bits16.bit10 = value; break;
case 11: bf->bits16.bit11 = value; break;
case 12: bf->bits16.bit12 = value; break;
case 13: bf->bits16.bit13 = value; break;
case 14: bf->bits16.bit14 = value; break;
case 15: bf->bits16.bit15 = value; break;
}
}
// 獲取指定位的值
bit getBit(uint16_t *data, int index) {
BitField *bf = (BitField *)data;
switch (index) {
case 0: return bf->bits16.bit0;
case 1: return bf->bits16.bit1;
case 2: return bf->bits16.bit2;
case 3: return bf->bits16.bit3;
case 4: return bf->bits16.bit4;
case 5: return bf->bits16.bit5;
case 6: return bf->bits16.bit6;
case 7: return bf->bits16.bit7;
case 8: return bf->bits16.bit8;
case 9: return bf->bits16.bit9;
case 10: return bf->bits16.bit10;
case 11: return bf->bits16.bit11;
case 12: return bf->bits16.bit12;
case 13: return bf->bits16.bit13;
case 14: return bf->bits16.bit14;
case 15: return bf->bits16.bit15;
}
// 默認返回0,這里可以根據需要修改
return 0;
}
int main() {
uint16_t data = 0xFFFF;
// 讀取并打印每一位的值
for (int i = 0; i < 16; i++) {
printf("Bit %d: %d\n", i, getBit(&data, i));
}
// 將奇數位設置為0
for (int i = 0; i < 16; i++) {
if (i % 2 == 1) {
setBit(&data, i, 0);
}
}
// 打印修改后的值
printf("Modified value: %04X\n", data);
return 0;
}
復制代碼
作者:
624353765
時間:
2024-4-12 07:27
使用位域比使用bit變量慢,還有位域是這樣用的嗎
作者:
longdeng84
時間:
2024-4-12 16:03
現在單片機的資源都不是很緊缺了,位域操作還有必要不?
作者:
Hephaestus
時間:
2024-4-14 14:07
如果你的單片機體系不支持位操作,移位最快。
如果你的單片機體系支持位操作,請查閱編譯器手冊,比如C51用bdata、bit這些擴展關鍵字,最快。
作者:
1600277881
時間:
2024-4-15 15:32
這要看你用的是什么核, 51就位操作快, arm就移位快一丁點
作者:
mirvv
時間:
2024-9-13 10:53
longdeng84 發(fā)表于 2024-4-12 16:03
現在單片機的資源都不是很緊缺了,位域操作還有必要不?
我用數碼管顯示的時候就是用位域的,很節(jié)省空間,讓哪個數碼管亮,就用一個bit位
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
日韩一区二区福利视频
|
国产精品久久二区
|
久久精品中文
|
免费精品
|
天天综合日日夜夜
|
国产人久久人人人人爽
|
婷婷在线视频
|
欧美日韩中文字幕
|
欧美成人自拍视频
|
美国黄色毛片
|
中文字幕在线观看一区二区
|
精品无码三级在线观看视频
|
综合久久av
|
欧美日韩不卡
|
国产91久久精品一区二区
|
日韩一及片
|
精品国产区
|
欧美日韩综合
|
欧美精品网
|
狠狠躁天天躁夜夜躁婷婷老牛影视
|
精品福利一区二区三区
|
成人看片在线观看
|
国产视频一区二区在线观看
|
国产一区二区欧美
|
日本黄色片免费在线观看
|
福利一区二区在线
|
欧美1区2区
|
中文字幕一区在线
|
一区二区三区视频在线观看
|
国产精品久久久久久久久久
|
九九九视频精品
|
91av在线电影
|
国产1区在线
|
午夜精品福利视频
|
成人免费视频一区
|
午夜手机在线
|
国产精品呻吟久久av凹凸
|
黄色大片观看
|
国产做a爱片久久毛片
|
日本免费在线
|
一级做a爰片性色毛片16美国
|