左移并转为无符号返回签名

时间:2017-09-12 21:14:19

标签: c types casting bit-manipulation

有人可以解释你为什么要这样做吗?为了便于参数,ErrorAssignment的类型也是sint32

问题:

转换为无符号,进行左移位,然后转换为已签名的数据类型的目的是什么?

  • sint32是带符号的32位整数

  • uint32是无符号的32位整数

ErrorAssignment = ((sint32) (( (uint32) DemandError) << 9))

编辑1:以上实际上来自最终成为真值的比较。有关更完整的说明,请参阅以下代码

sint32 valueOutCompare;
uint8  aCompareValue;
Boolean isValueTrue;
sint32 positiveLimitValue = 50;
sint32 negativeLimitValue = -50;

isValueTrue = ( (valueOutCompare > ((sint32) (((uint32)positiveLimitValue<< 9)))
                 ||     ((valueOutCompare  < ((sint32) (((sint32) negativeLimitValue) << 9)))) );

0 个答案:

没有答案