- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在研究的算法必须经常检查某个任意整数值“x”是否小于、大于或等于另一个任意整数值“y”。我使用的语言是 C。
一种天真的方法是使用 if-then-else 分支来检查这一点,但这不会以最佳方式工作,因为处理器的分支预测器会搞砸。我正在尝试仅使用算术/逻辑评估以及按位运算来实现这种比较,但老实说,我的大脑现在卡住了。
我将调用函数 f(x, y)。如果 x < y,该函数将返回 1; 2、如果x==y;或 3,如果 x > y。
我的一个想法是评估:
x = 3 * (x > y)
当 x > y 时返回 3,否则返回 0。可能有一个操作返回 1 或 2,如果 x == 0 使用一些按位运算符和条件 x == y 或 x < y,但我还没有找到任何这样的操作组合来实现我需要的。
最后,我正在寻找任何函数 f(x, y),它会以尽可能少的操作给出我的结果,无论是否有 bithacks;它只需要快。因此,如果您有任何其他我可能没有考虑过的想法,也非常感谢为我指出另一个解决方案。
最佳答案
以下表达式将执行您想要的操作。
1 + (x >= y) + (x > y)
在 x86-64 上这个 compiles to a fairly-efficient code using SETcc
instead of branches :
compare(int, int):
xorl %edx, %edx
cmpl %esi, %edi
setg %al
setge %dl
movzbl %al, %eax
leal 1(%rdx,%rax), %eax
ret
在 ARM 上:
compare(int, int):
cmp r0, r1
ite lt
movlt r0, #1
movge r0, #2
it gt
addgt r0, r0, #1
bx lr
关于c - Bithacks : Determine whether value is less, 大于或等于某个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32170288/
我正在尝试使用 vlookup 在 Excel 中创建成绩册功能。我正在尝试匹配条件(>=92、>=90 等),但是我无法解决这个问题。 如何使用 vlookup寻找大于或等于引用的值? =VLOOK
我无法弄清楚如何在查询中进行“大于或等于”比较。 我有一个模型字段: invoicedate = db.Column(db.Date(), nullable=True, key='InvoiceDat
我正在运行针对一些数据编写的小型 Python 测试,得到了一些奇怪的结果。归结为: priceDiff = 219.92 - 219.52 if(priceDiff >= .40): prin
在 Kotlin when声明我可以做 in 2..4相当于 >= 2和 = 2 ?我尝试了无限范围:in 2.. ,但这似乎不是一回事。 我也试过只输入 >= 2 ,但也没有运气。 我如何在 kot
我试图了解 SHA-1 哈希函数中使用的内部机制。我还指的是 FIPS-180 标准。 设法编写一个实现能够返回对字符串“abc”进行哈希处理的准确结果。然而,我仍然直言不讳地解释如何解释 >= 56
我有一个 MySQL 照片表,并将它们的尺寸存储在单个 varchar 字段中,即。 “1024x768”。有没有办法选择大于或等于给定尺寸的照片,而无需修改表格来分别存储“高度”和“宽度”? 谢谢
什么是大于或等于的简单构造,其中相等部分仅基于 bool 参数应用。 一种直接的方式(Type(Java)Script): function isGreaterThanOrEqual(a: numbe
一般如何使用NEON比较指令? 这是一个案例,我想使用大于或等于指令? 目前我有一个, int x; ... ... ... if(x >= 0) { .... } 在 NEON 中,我想以同样的方式
这个问题已经有答案了: Floating point less-than-equal comparisons after addition and substraction (1 个回答) 已关闭 3
我有一个要求,我需要两个日期选择器来输入起始日期和截止日期。截止日期应该大于或等于起始日期(选择起始日期后,所有以前的日期都应该在第二个 Datepiker 中禁用)。也from date 和 tod
是否可以将约束设置为...例如: 小于或等于 100 但大于或等于 50 这样一来,在较小的设备上(我很难让 iPhone 3.5 英寸到 4.7 英寸的 View 看起来不错,因为它们都属于同一尺寸
我在这里错过了什么?这个剧本对我来说很合适。 但出于某种原因,当我向它发送邮政编码 02897(或任何应该是罗德岛的邮政编码)时,它返回新罕布什尔州。除了 Javascript 开发人员可能拥有的政治
我正在调查 smoothstep(edge0, edge1, x)功能。 docs如果 edge0 >= edge1,则表示结果未定义. 在 a shader有一行: smoothstep(radiu
http://msdn.microsoft.com/en-us/library/system.double.epsilon.aspx If you create a custom algorithm
(log n)^k = O(n)? For k greater or equal to 1. 我的教授在类里面向我们展示了这个陈述,但是我不确定时间复杂度为 O(n) 的函数意味着什么。即使是像 n^
Mysql表 Name | Amount ------------ name1 | 150 name1 | 90 name2 | 100 name2 | 110 name3 | 10 结
我是一名优秀的程序员,十分优秀!