找回密码
 立即注册
查看: 1226|回复: 14

请教C51中的一个数学运算错误 | 强制类型转换

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:7
  • 最近打卡:2024-08-29 08:02:23

4

主题

4

回帖

90

积分

注册会员

积分
90
发表于 2024-6-10 00:16:45 | 显示全部楼层 |阅读模式
我有个这样的运算,在设定m1为uint,x1为ulong时,在设定公式X1=m1*1000,结果出现了错误。
比如m1=512.经过上述运算,结果为53248(应该为512000),不知道是什么原因。



这个问题困扰了我很久,不知道该如何解决
回复

使用道具 举报 送花

  • 打卡等级:以坛为家III
  • 打卡总天数:616
  • 最近打卡:2025-08-07 10:46:20
已绑定手机

54

主题

1880

回帖

3478

积分

论坛元老

积分
3478
发表于 2024-6-10 06:29:21 | 显示全部楼层
类型转换的问题
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家III
  • 打卡总天数:616
  • 最近打卡:2025-08-07 10:46:20
已绑定手机

54

主题

1880

回帖

3478

积分

论坛元老

积分
3478
发表于 2024-6-10 06:37:02 | 显示全部楼层
看看这是不是你要的数?就取了低32位
截图202406100636149475.jpg
截图202406100636251840.jpg
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家III
  • 打卡总天数:616
  • 最近打卡:2025-08-07 10:46:20
已绑定手机

54

主题

1880

回帖

3478

积分

论坛元老

积分
3478
发表于 2024-6-10 06:50:04 | 显示全部楼层
你可以这样操作就行
截图202406100649504460.jpg
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家III
  • 打卡总天数:616
  • 最近打卡:2025-08-07 10:46:20
已绑定手机

54

主题

1880

回帖

3478

积分

论坛元老

积分
3478
发表于 2024-6-10 06:55:46 | 显示全部楼层
运算结果如下:
截图202406100655323362.jpg
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:458
  • 最近打卡:2025-08-06 09:09:11

26

主题

122

回帖

509

积分

高级会员

积分
509
发表于 2024-6-10 07:21:24 | 显示全部楼层
强制数据类型转换
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:519
  • 最近打卡:2025-08-07 00:08:02
已绑定手机

19

主题

3248

回帖

5563

积分

论坛元老

积分
5563
发表于 2024-6-10 08:39:14 | 显示全部楼层
又学到了,原理unsigned int 要变unsigned long之前要强制转换,否则超65535会出错啊。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:498
  • 最近打卡:2025-08-07 09:39:21

0

主题

170

回帖

1541

积分

金牌会员

积分
1541
发表于 2024-6-10 09:38:47 | 显示全部楼层
如果m1为uint是16位的话,2的16次方能表示最大值是65535,而m1=512*1000后的值明显已经溢出
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:498
  • 最近打卡:2025-08-07 09:39:21

0

主题

170

回帖

1541

积分

金牌会员

积分
1541
发表于 2024-6-10 10:03:26 | 显示全部楼层
dt.png

53248就是512000转换成二进制后,低16位的值(高位已经被裁掉)。懂了吧。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:552
  • 最近打卡:2025-08-06 10:44:52

15

主题

60

回帖

2641

积分

金牌会员

积分
2641
发表于 2024-6-10 10:52:32 | 显示全部楼层
试一下  X1=((ulong)(m1))* 1000    这样? 行吗?
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-8-7 12:19 , Processed in 0.129270 second(s), 107 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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