小编qq4*_*qq4的帖子

为什么 0x1 被解释为小于 0xC0000000?

我正在学习整数的二进制表示,并尝试编写一个int使用饱和度返回乘以 2的函数。思考过程是,如果值正溢出,函数返回INT_MAX,相反,如果它负溢出,则返回INT_MIN。在所有其他情况下,二进制值左移 1。

我想知道的是为什么我必须将值转换0xC0000000为 anint才能在我传递参数时使我的函数正常工作x = 1

这是我的功能:

int timestwo (int x){
    if(x >= 0x40000000) // INT_MAX/2 + 1
        return 0x7fffffff; // INT_MAX
    else if(x < (int) 0xC0000000) // INT_MIN/2
        return 0x80000000; // INT_MIN
    else
        return x << 1;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c binary hex integer bit-manipulation

2
推荐指数
1
解决办法
157
查看次数

如何创建文件并使其可执行,而无需输入两次文件名?

我希望能够一次性列出一个文件,而不必chmod +x像. 有没有办法一次性做到这一点?以下是一些描述预期行为的伪代码解释:touchtouch foo && chmod +x foo

chmod <placeholder> && touch <placeholder> <-redirect- "filename"
Run Code Online (Sandbox Code Playgroud)

我厌倦了输入一次性命令,然后返回并对不同文件执行几次相同的命令,我必须在每个命令中编辑文件名两次。在我的伪代码示例中,我只需返回到之前输入的命令并仅编辑末尾的文件名字符串。

我努力了,

touch "$(echo foo && chmod +x !$)"
Run Code Online (Sandbox Code Playgroud)

但文件名既不在字符串的末尾,而且它似乎不起作用,因为最后!$一个参数是传递给 before 的命令的参数touch

bash arguments one-liner

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

标签 统计

arguments ×1

bash ×1

binary ×1

bit-manipulation ×1

c ×1

hex ×1

integer ×1

one-liner ×1