1600277881 发表于 2023-9-24 07:11 感谢回复 这就是我不知道的系统运作的规律,所以才没找到门 |
joyb 发表于 2023-9-25 10:07 感谢回复,没入门的一小白, 一边看着论坛前辈的帖子学习,一边琢磨+仿真测试,有时候遇到问题,半天找不到门的时候,才上来发帖请教,感谢赐教 ![]() |
1600277881 发表于 2023-9-24 07:11 感谢回复 就是这里定义类型出错了,之前没注意到u8的只能是到256 ![]() |
|
x=0x15=0001 0101 y=0x02=0000 0010 z=x*4+y=0001 0101 10 z/256=z>>8=00 后面运算均为0 |
| 不太明白楼主的疑问,不管z是什么类型,就楼主给出的X,Y的数值,W怎么都等于0啊,为什么有疑问呢 |
| 先把数据类型整明白。 |
1600277881 发表于 2023-9-24 07:11 你看楼主位第一张图的watch窗口,z显然是char型,是不是unsigned不清楚,但是z/256一定是零。 |
|
Z你定义是float? 如果不是, 凭什么你认为它能做到 0.3359375 * 5 ??? 如果说z定义是整数,不管是u8, u16 或是u32, z/256这一动作得到的都是0, 后面你再做啥都是白搭的 |
|
可能是C51 我只有MDK |
|
x=0x15; y=0x02; z=x*4+y; w=(z/256)*5.0; //等于0x56 上面的计算不知道这样理解对不对 这里的结果16进制0x56*100(256的16进制)得到是:16进制结果是0.56 ,十进制的结果 0.3359375,然后乘上5 ,这里是用十进制的乘 还是16进制的结果相乘 如果是跟16进制的结果相乘的话 1.AE 十进制是1.6796875 这个也是大于0的 但为啥C值还是0, // w=z; a=w/100; b=w%100/10; c=w%10; |