純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)