Resumo e exemplos de operações convencionais em bytes e palavras em linguagem C

/*
Descrição da função:
UINT16 value Os dados a serem operados
UINT16 start O bit de byte inicial nos dados de operação a serem buscados
UINT16 end O bit de byte final nos dados de operação
a serem buscados Exemplo:
    UINT16 t = 0x36; //0011 0110
    UI16BIT res = Proget_16bits(t,4,5);
    qDebug() << "res = " << res;
    res = Proget_16bits(t,4,5);
    qDebug() << "res = " << res;
*/
UINT16 Proget_16bits(UINT16 value, UINT16 start, UINT16 end)//pega vários bits consecutivos de uma determinada palavra, o valor representado
{   UINT16 a, b,c;   a=value>>(start);   b=~(~0<<(end-start+1));   c=a&b;   return c; } /* Descrição da função: BYTE value Dados a serem operados BYTE start To O byte inicial nos dados de operação a serem buscados BYTE end O byte final nos dados de operação a serem buscados











Exemplo:
    BYTE t = 0x36; //0011 0110
    BYTE res = Proget_8bits(t,4,5);
    qDebug() << "res = " << res;
    res = Proget_8bits(t,4,5);
    qDebug() << "res = " << res;
*/
BYTE Proget_8bits(BYTE value,BYTE start,BYTE end) //pega alguns bits consecutivos de um certo byte, o valor representado
{   BYTE a,b,c ;   a=value >>(início);   b=~(~0<<(fim-início+1));   c=a&b;   return c; }





/* Define a posição do bit de um determinado valor de dados para 1 e mantém os outros bits inalterados*/
#define setDataBit(valor,bit) valor |= (0x1 << bit)
/* Limpa o bit bit de um valor de dados para 0 e mantém os outros bits inalterados*/
#define clrDataBit(valor,bit) valor &= ~(0x1 << bit)
/* Obtém um determinado valor de dados binários dos dados*/
#define getDataBit(x,y) ((x) >> (y)&1)

Acho que você gosta

Origin blog.csdn.net/u010258235/article/details/131396865
Recomendado
Clasificación