- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
有一天,我在 Verilog 中学到了一个很酷的技巧。当你需要重复做某事时。您可以使用移位寄存器来计算递增的次数。只需将 1 从 LSB 移到 MSB,当它到达 MSB 时就完成了。
在 C 中它会是这样的:
for(j=0b1; !(j & (1<<16)); j=j<<1)
{
/*do a thing 16 times*/
}
我知道由于位宽,它的用途有限,但它不涉及任何加法,所以速度很快。所以我的问题是:这个有什么用吗?在 C 或任何其他高级语言中使用是否值得?
也许在资源有限的嵌入式系统中。
谢谢
最佳答案
这是非常不值得的。它使代码变得不那么清晰和难以阅读,并且性能差异可以忽略不计。
您的编译器可以比您更好地进行这些类型的优化。出于性能原因,甚至可能会展开像这样的短循环。但是,如果您像这样编写循环,编译器可能无法轻松解决,因此您甚至可能会减慢程序速度。
这实际上是一个微优化的例子,几乎肯定不会对程序的运行时间产生明显的影响。
关于c - 硬件启发循环。废话?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10760366/
我正在尝试构建一个 float 在 ViewController 顶部的按钮,它应该静态地保持在相同的位置,而它下面的 viewcontroller 可以上下滚动。 我设计了自己的按钮类,在父 Vie
目前Boost有hash_combine函数输出32位无符号整数(准确的说是size_t)。一些引用: http://www.boost.org/doc/libs/1_43_0/doc/html/ha
我试过看看如果我们尝试以与 Java 中类似的方式“破坏”一个对象数组,在 C++ 中会发生什么。 在 Java 中我们可以有一个 Double[] 类型的数组,例如,将其向上转换为 Number[]
很抱歉问了这么长的问题,但我需要做一个介绍以使其更清楚。 我需要一些代码来在我的 Headers 组件之间切换 和 . 起初我使用 CSS 媒体查询通过 display: block | none;
关闭。这个问题是opinion-based .它目前不接受答案。 想要改进这个问题? 更新问题,以便 editing this post 可以用事实和引用来回答它. 关闭 5 年前。 Improve
我是一名优秀的程序员,十分优秀!