|
|
1
6
这与体系结构不同,但是代码 不 编译到英特尔CPU上的跳转。 此代码:
编译为:
或:
通过MSVC、Clang和GCC与O2:
这只是一个没有优化的跳跃,无论如何你都不会做。 |
|
|
2
2
我还发现需要这样做,将length-2数组索引为0表示零值,1表示非零值。 将int强制转换为bool,然后再返回int。这不会跳到我尝试过的几乎所有编译器(gcc、clang、最近的msvc)上,除了2018年之前的msvc。我建议您检查程序集代码以确保在您的平台上。
编辑:这不满足您的约束“仅使用位运算符和算术”,但此强制转换利用了程序集优化,将非常有效。
编辑:你的“显而易见”的解决方案
|
|
|
3
0
试试这个:
C++有一个隐式转换定义为
那么
那么
然后还有一个隐式转换定义自
因此,
|
|
no one special · 32位整数缩放,无溢出 8 年前 |
|
|
Benn Tan · 比特操作:更难翻动硬币 8 年前 |
|
|
Ganesh Thampi · 使用位运算符将十进制转换为二进制 8 年前 |
|
|
Ganesh Thampi · 使用位的奇偶程序 8 年前 |
|
|
datapanda · 三维网格的莫顿反向编码 8 年前 |
|
|
rubyquartz · 交换无符号短整数的字节 8 年前 |
|
|
John Proctor · C中位的掩蔽范围 8 年前 |
|
|
Areg Sarvazyan · 从无符号int中提取位的函数 8 年前 |
|
|
user9505617 · 按位异或0xFFFFFFFF? 8 年前 |