首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在16位数组(15:0)中将特定位设置为1,同时清除剩余位

如何在16位数组(15:0)中将特定位设置为1,同时清除剩余位
EN

Stack Overflow用户
提问于 2019-06-04 05:19:19
回答 2查看 336关注 0票数 -1

我有一个假设为16位(15:0)的数组。我有一个注册的4位变量,比如'pos‘,它会根据其他条件发生变化。根据变量pos的值,我想设置一个位并清除剩余的位(0)。例如,如果为pos=5,则位5应变为1,而所有其他位应设置为0(清除)。0000 0000 00100 0000是所需的值。这应该是可以在系统verilog中综合的

我可以设置所需的位,但清除剩余的位一直是一个挑战。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-06-04 05:39:15

使用逻辑移位运算符来设置位

代码语言:javascript
复制
value = 16'b1 << pos;
票数 3
EN

Stack Overflow用户

发布于 2019-06-04 05:37:21

1)查看shift中的另一个答案

2)对于更复杂的情况,比如如果你想在1之后或之前保留另一个值的右或左部分,你可以简单地使用case语句分配16个可能值中的完整答案/结果。

3)您还可以使用循环遍历所有位来设置它们自己的逻辑等式,如等于计数器时为1,大于时为0,低于/else时为源位,依此类推...

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56434670

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档