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