Microchip
直播中

杨芳

7年用户 287经验值
私信 关注
[问答]

平方16位数字不能提供正确的值

我使用XC8编译器。我有一个定义为UINT16或无符号短int x的变量。然后我定义一个变量UINT32或无符号长int x_squared。当我遍历代码x=506或1FA十六进制时。下一个语句是x_squared=x*x;x_square的结果是E824十六进制,而不是我所期望的3E824。我不明白为什么,谢谢

回帖(3)

王焕树

2019-10-23 11:10:43
这就是用C进行计算的方法。由于“=”右边的两个参数都是16位,所以使用16位计算来完成,并且在完成计算之后只转换为32位。您需要将一个参数转换为32位来强制进行32位计算。
举报

李维兴

2019-10-23 11:17:23
十六进制数通常用前缀0x来写,例如0x3e824。
举报

谢剑萍

2019-10-23 11:30:12
谢谢!
举报

更多回帖

发帖
×
20
完善资料,
赚取积分