純C下無號Byte單一Bit設定

純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設定

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *