c - (C 语言) 有没有办法在 while 循环中放置两个不同的可能整数值的条件参数?

标签 c binary bit-manipulation twos-complement

假设我们有一个函数,可以采用正整数或负整数二进制字符串,并计算到达最左边有效位所需的右移次数

我有这样的东西

int shiftCount(int x){
    int count = 0;
    int temp = x;

    while((temp!=1) || (temp!=-1)){   //if negative int, terminate at first -1
        count+=1;
        temp=temp>>1;
    }

    return count;
}

这不会返回我想要的。它最终陷入一个永无休止的循环,我认为这是因为它试图满足这两个条件。有没有一种实际的方法可以在 while 循环中轻松测试 2 个不同的有符号值,或者我必须制作 2 个单独的条件语句,每个条件语句都有自己的 while 循环?

最佳答案

您的 or 始终为真。由于 temp 不能同时为 1-1,因此它始终要么不是 1,要么不是 -1.

关于c - (C 语言) 有没有办法在 while 循环中放置两个不同的可能整数值的条件参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42196830/

相关文章:

c - 我必须是 super 用户才能使用 C 的文件处理操作吗?

c++ - 使用 C/C++ 访问 S3/DynamoDB 的选项

python - 如何以十六进制字节解包/解码十六进制字符串?

ruby - 在 Ruby 中将二进制值转换为十六进制

c# - 仅使用按位运算符将两个整数相加?

c - __CC_ARM、__ICCARM__、__GNUC__ 和 __TASKING__ 宏是什么意思?

c - 整个窗口的 glReadPixels (OpenGL)

java - 原始数据中的 1's & 0' 字符串

Java:将项目添加到 ArrayList<ArrayList<Integer>> 时遇到问题

javascript - 为什么按位运算符 OR 会 chop 此示例中的值?