OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 7969|回复: 7

[ALTERA] 32位的数怎样截短,并赋值给16位宽的变量?

[复制链接]

52

主题

147

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
316
金钱
316
注册时间
2019-4-1
在线时间
118 小时
发表于 2020-1-15 17:11:56 | 显示全部楼层 |阅读模式
5金钱
有一个变量A是32位宽的,另外有一个变量B是16位宽的,我想把A的数值赋给B,(当然,这里A的实际有效数值比较小,不考虑溢出的问题)
像下面的写法编译时会警告:
B <= A;
我想先把A的位宽截断成16位的(例如取低16位),然后再赋给B,就不会警告了。应该怎样写代码呢?非常感谢指教!


正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

10

主题

25

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1086
金钱
1086
注册时间
2018-8-10
在线时间
149 小时
发表于 2020-1-15 17:11:57 | 显示全部楼层
回复

使用道具 举报

22

主题

2247

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4458
金钱
4458
注册时间
2013-4-22
在线时间
333 小时
发表于 2020-1-17 11:16:07 | 显示全部楼层
很简单吧, B = (unsigned short)A;
回复

使用道具 举报

22

主题

2247

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4458
金钱
4458
注册时间
2013-4-22
在线时间
333 小时
发表于 2020-1-17 11:17:14 | 显示全部楼层
建议回炉重学C语言的基础,这是基础的知识
回复

使用道具 举报

36

主题

1263

帖子

1

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1612
金钱
1612
注册时间
2012-6-15
在线时间
39 小时
发表于 2020-1-17 11:47:54 | 显示全部楼层
你用的什么语言?
大部分语言  <= 的意思是  ≤  小于等于

= 是赋值。 在有些语言里面 :=是赋值

所以 你 用  B=A 就可以了 自动转换了  
或者强制转换 B = (short)A;  //C语言 有符号
回复

使用道具 举报

52

主题

147

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
316
金钱
316
注册时间
2019-4-1
在线时间
118 小时
 楼主| 发表于 2020-1-17 16:14:09 | 显示全部楼层
三叶草 发表于 2020-1-17 11:17
建议回炉重学C语言的基础,这是基础的知识

这几年写过的,有效的C代码,没有上万行,也有几千行了。。。但还是经常会遇到一些很简单、基本的语法问题,想当年班上很多同学去选修C语言,而我没去(非计算机专业)。。。非常感谢各位的热心回复!
回复

使用道具 举报

8

主题

55

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
314
金钱
314
注册时间
2017-1-14
在线时间
48 小时
发表于 2020-2-18 16:24:56 | 显示全部楼层
我是刚接触,这是HDL语言吧,不是C。<=:非阻塞赋值吧
回复

使用道具 举报

1

主题

21

帖子

0

精华

新手上路

积分
35
金钱
35
注册时间
2019-5-3
在线时间
7 小时
发表于 2020-3-4 12:43:24 | 显示全部楼层
这是Verilog 语言,不是C
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-10-3 09:27

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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