数据先>>8后再和0xFF取和(&)是啥意思?

本文解释了短整型变量aacx右移后与0xFF进行运算的现象,指出0xFF相当于11111111,无论前补多少个0,结果保持不变。重点讲解了如何通过这种操作获取16位数据的前后部分

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

举个例子,看下列代码:

tbuf[0]= (aacx>>8)&0xFF;

tbuf[1]=aacx&0xFF;

分析如下:

前面有定义,short  aacx=0;

                      unsigned char tbuf[2];

说明short是16位的整形,初始赋值0,假如accx通过函数得到1010101010011001,右移8位后是0000000010101010,它和11111111(0xFF)取和,11111111前面可以在加8个0为0000000011111111,值都是一样的,和1取&还是它自身, 求和后得10101010。

1010101010011001和11111111(0xFF)求和,同样11111111前面也加8个0为0000000011111111,求和后得aacx后面的8位为10011001。

所以上述tbuf[0]是aacx的前8位的数,tbuf[0]是aacx的后8位的数。

结论,0xFF=11111111=0000000011111111,值的大小都是一样的,前面可以补任意0。

16位的0000000011111111和8位的11111111值的大小都是一样的。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值