1
我一直在與C聊天,我發現能夠直接操縱位是迷人的和強大的(並且我認爲是危險的)。我很好奇,比較C中不同位的最好方法是什麼。例如,15號以二進制爲表示:如何比較C中的兩個位值?
00001101
你如何比較哪位沒有計算他們的不同:
00001111
而且數量13表示?使用移位很容易確定15包含4 1和13包含3 1,但是如何輸出兩者之間的差異(例如,2^1點在兩者之間是不同的)?我只是想不出一個簡單的方法來做到這一點。任何指針將非常感激!
編輯:我應該澄清,我知道XOR是正確的方式去解決這個問題,但我有一個問題與實施。我想我的問題是每次比較一個比特(而不是每個人都會產生差異)。我想出瞭解決的辦法是:
void compare(int vector1, int vector2) {
int count = 0;
unsigned int xor = vector1^vector2;
while (count < bit_length) {
if (xor % 2 == 1) { //would indicicate a difference
printf("%d ", count);
}
xor >>= 1;
count++;
}
}
那就是'XOR'。 –
操縱比特沒有什麼神奇或危險 - 它們只是一個數字的個別數字。 – Crashworks
http://stackoverflow.com/questions/1746613/bitwise-operation-and-usage/1746642#1746642 – paxdiablo