找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1266|回复: 10
打印 上一主题 下一主题
收起左侧

请教C语言高位加低位的转换问题 在keil里仿真显示为0,是哪里出错了

[复制链接]
跳转到指定楼层
楼主
大家帮忙看看 这是哪问题  高8位加上低2位后 再转换10进制 就abc函数无数值



x=0x15;

    y=0x02;

        z=x*4+y;
        w=(z/256)*5.0;
//        w=z;        
        a=w/100;
    b=w%100/10;
        c=w%10;

61659.png (12.83 KB, 下载次数: 49)

61659.png

838.png (13.98 KB, 下载次数: 48)

838.png
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:641483 发表于 2023-9-23 17:21 | 只看该作者
   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;
回复

使用道具 举报

板凳
ID:883242 发表于 2023-9-24 04:46 | 只看该作者
可能是C51

我只有MDK
回复

使用道具 举报

地板
ID:1088185 发表于 2023-9-24 07:11 | 只看该作者
Z你定义是float? 如果不是, 凭什么你认为它能做到 0.3359375 * 5 ???
如果说z定义是整数,不管是u8, u16 或是u32, z/256这一动作得到的都是0, 后面你再做啥都是白搭的
回复

使用道具 举报

5#
ID:883242 发表于 2023-9-25 02:43 | 只看该作者
1600277881 发表于 2023-9-24 07:11
Z你定义是float? 如果不是, 凭什么你认为它能做到 0.3359375 * 5 ???
如果说z定义是整数,不管是u8, u1 ...

你看楼主位第一张图的watch窗口,z显然是char型,是不是unsigned不清楚,但是z/256一定是零。
回复

使用道具 举报

6#
ID:1080935 发表于 2023-9-25 07:58 | 只看该作者
先把数据类型整明白。
回复

使用道具 举报

7#
ID:384109 发表于 2023-9-25 08:59 | 只看该作者
不太明白楼主的疑问,不管z是什么类型,就楼主给出的X,Y的数值,W怎么都等于0啊,为什么有疑问呢
回复

使用道具 举报

8#
ID:1064915 发表于 2023-9-25 10:07 | 只看该作者
x=0x15=0001 0101
y=0x02=0000 0010
z=x*4+y=0001 0101 10
z/256=z>>8=00
后面运算均为0
回复

使用道具 举报

9#
ID:641483 发表于 2023-9-25 12:08 | 只看该作者
1600277881 发表于 2023-9-24 07:11
Z你定义是float? 如果不是, 凭什么你认为它能做到 0.3359375 * 5 ???
如果说z定义是整数,不管是u8, u1 ...

感谢回复 就是这里定义类型出错了,之前没注意到u8的只能是到256
回复

使用道具 举报

10#
ID:641483 发表于 2023-9-25 12:15 | 只看该作者
joyb 发表于 2023-9-25 10:07
x=0x15=0001 0101
y=0x02=0000 0010
z=x*4+y=0001 0101 10

感谢回复,没入门的一小白, 一边看着论坛前辈的帖子学习,一边琢磨+仿真测试,有时候遇到问题,半天找不到门的时候,才上来发帖请教,感谢赐教
回复

使用道具 举报

11#
ID:641483 发表于 2023-9-25 12:17 | 只看该作者
1600277881 发表于 2023-9-24 07:11
Z你定义是float? 如果不是, 凭什么你认为它能做到 0.3359375 * 5 ???
如果说z定义是整数,不管是u8, u1 ...

感谢回复 这就是我不知道的系统运作的规律,所以才没找到门
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表