Resumen y ejemplos de operaciones convencionales sobre bytes y palabras en lenguaje C

/*
Descripción de la función:
UINT16 valor Los datos que se van a operar
UINT16 start El bit de byte de inicio en los datos de operación que se van a buscar
UINT16 end El bit de byte de final en los datos de operación
que se van a buscar Ejemplo:
    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)//toma varios bits consecutivos de una determinada palabra, el valor representado
{   UINT16 a, b,c;   a=valor>>(inicio);   b=~(~0<<(fin-inicio+1));   c=a&b;   return c; } /* Descripción de la función: BYTE valor Datos a operar BYTE inicio Para El byte de inicio en los datos de operación que se van a buscar BYTE final El byte de final en los datos de operación que se van a buscar











Ejemplo:
    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) //tomar algunos bits consecutivos de un cierto byte, el valor representado
{   BYTE a,b,c ;   a=valor >>(inicio);   b=~(~0<<(fin-inicio+1));   c=a&b;   return c; }





/* Establecer la posición de bit de un cierto valor de datos en 1, y mantener los otros bits sin cambios*/
#define setDataBit(valor, bit) valor |= (0x1 << bit)
/* Borrar el bit bit de un valor de datos a 0, y mantener los otros bits sin cambios*/
#define clrDataBit(valor, bit) valor &= ~(0x1 << bit)
/* Obtener un cierto valor de datos binarios de los datos*/
#define getDataBit(x,y) ((x) >> (y)&1)

Supongo que te gusta

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