/*
函数说明:
UINT16 value 要操作的数据
UINT16 start 要取的操作数据中的开始字节位
UINT16 end 要取的操作数据中的结束字节位
使用示例:
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)//从某一个字中取连续的几位,所表示的数值
{
UINT16 a,b,c;
a=value>>(start);
b=~(~0<<(end-start+1));
c=a&b;
return c;
}
/*
函数说明:
BYTE value 要操作的数据
BYTE start 要取的操作数据中的开始字节位
BYTE end 要取的操作数据中的结束字节位
使用示例:
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) //从某一个字节中取连续的几位,所表示的数值
{
BYTE a,b,c;
a=value>>(start);
b=~(~0<<(end-start+1));
c=a&b;
return c;
}文章来源地址https://www.toymoban.com/news/detail-501630.html
/* 将某个数据value的第bit位置1,其它位保持不变 */
#define setDataBit(value,bit) value |= (0x1 << bit)
/* 将某个数据value的第bit位清0,其它位保持不变 */
#define clrDataBit(value,bit) value &= ~(0x1 << bit)
/* 获取数据的某一位二进制数据值 */
#define getDataBit(x,y) ((x) >> (y)&1)
文章来源:https://www.toymoban.com/news/detail-501630.html
到了这里,关于C语言中对字节和字的位的常规操作汇总及示例的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!