小编Pas*_*mer的帖子

这个min()函数如何工作?

我遇到了这段代码:

int __min(int a, int b) {
    return ((a)-(((a)-(b))&((b)-(a))>>31));
}
Run Code Online (Sandbox Code Playgroud)

我可以想象它与2s补码有关,它只适用于有符号的32位整数,但之后我就输了.

我发现了这个问题,但我不认为这些功能是相关的,还是我错了?

所以我有两个问题:

  1. 为什么这个功能有效?
  2. 是否存在(a<b)?a:b无法正常工作的情况,这个功能是否会过于复杂?

编辑:该函数是为GPU编写的,所以我认为@Banex可能是正确的写这个目的是为了避免分支.

c c++ bit-manipulation

5
推荐指数
1
解决办法
143
查看次数

Bash - 将时间间隔字符串转换为nr.几秒钟

我正在尝试将描述时间间隔的字符串转换为相应的秒数.

经过一些实验,我发现我可以date像这样使用:

soon=$(date -d '5 minutes 10 seconds' +%s); now=$(date +%s)
echo $(( $soon-$now ))
Run Code Online (Sandbox Code Playgroud)

但我认为应该有一种更简单的方法将"5分10秒"等字符串转换为相应的秒数,在本例中为310. 有没有办法在一个命令中执行此操作?

注意:虽然可移植性很有用,但这不是我的首要任务.

bash time timestamp

0
推荐指数
1
解决办法
646
查看次数

标签 统计

bash ×1

bit-manipulation ×1

c ×1

c++ ×1

time ×1

timestamp ×1