純C下無號Byte單一Bit設定
純C下無號Byte單一Bit設定與反解哪幾個Bit被設定
線上執行: https://www.tutorialspoint.com/compile_c_online.php
程式碼:
#include <stdio.h>
#include <stdlib.h>
unsigned char C_Byte_setBit(unsigned char data,int num)
{//移動次數(1,2,3,4,5,6,7,8)對應的值=1,2,4,8,16,32,64,128
unsigned char d=1;//2^0
if(num>0)
{
d=d<<(num-1);
}
else
{
d=0;
}
data=data|d;
return data;
}
int main()
{
int i=0;
unsigned char d='\0';
unsigned char c=1;//2^0
d=C_Byte_setBit(d,1);//out->1
printf("%d\n", d);
d=C_Byte_setBit(d,8);//out->128+1
printf("%d\n", d);
d=C_Byte_setBit(d,2);//out->128+1+3
printf("%d\n", d);
printf("have:");
for(i=0;i<8;i++)
{
c=1;
c=c<<(i);
if(d&c)//if((d&c)>0)
{
printf("%d,",i+1);
}
}
printf("\n");
return 0;
}
PS.
嵌入式(單晶片) C/C++ 位元資料儲存與解析
使用OR運算儲存(寫入),使用AND運算解析(讀取) [子網路遮罩也是利用這觀念]
2 thoughts on “純C下無號Byte單一Bit設定”
純C 左移 運算
類似: JAVA/C#/C/C++ 整數(X32 INT) 互轉 位元組/位元(BYTE/BIT)