0
我只是一个新手,当涉及到按位运算 - 如果这甚至是正确的术语 - 并且正在寻找一种更好的方法来执行逻辑整型返回码(这是各种Unix程序的标准)。即返回代码可能是1,2,4,8任意组合等解析WEXITSTATUS通过按位运算在C中求和的返回码
这里是我的代码(片段),到目前为止:
[...]
if (result == 0)
//no problem
else {
if ((result > 127) && (result % 128 == 0)) {
// exit code contained 128
result = result - 128;
}
if ((result > 63) && (result % 64 == 0)) {
// exit code contained 64
result = result - 64;
}
[...]
if (result > 0) {
// exit code contained 1
}
}
我知道,我应该能够有一个做到这一点按位运算符,如AND(&),但我不知道如何去做。虽然我并不十分了解按位操作,即如果我的确如果返回代码是128,那么if (result & 64)
也可能不是真的?
显然我对二进制数学的理解是令人震惊的,我从来没有真正做过这方面的代码。只是寻找一些正确的按位方法的说明。
也许更适合http://codereview.stackexchange.com/,因为您似乎有工作代码。 –
'WEXITSTATUS'和''中的其他宏将为您执行所有的位操作。自己做这件事没有必要也不需要。 –
'int contains_128 = result&128,contains_64 = result&64,...' – twalberg