按位異或和按位取反的相似之處
我發現? 按位異或? 的??定位反轉反轉? 功能? 和? 按位取反? 似乎有著共同的作用。
int a = 10;
?printf("按位異或的定位取反功能%d\n按位取反%d\n", a ^ 0xFF, ~a);
結果? 245? -11
該代碼輸出的卻不一樣。不明白了,求教。
我發現? 按位異或? 的??定位反轉反轉? 功能? 和? 按位取反? 似乎有著共同的作用。
int a = 10;
?printf("按位異或的定位取反功能%d\n按位取反%d\n", a ^ 0xFF, ~a);
結果? 245? -11
該代碼輸出的卻不一樣。不明白了,求教。
2015-10-26
舉報
2015-10-29
0xFF 這個是只有低8位為1,高位全是0。
整型10 是低4位為 1010,高位全為0,且一般來說是占用32位。
你應該明白了吧,區別就在于高位的行為不一樣。
取反是將a高位的0都變成1,這樣最高位的符號位也變成1了,所以最終值是負的。
而異或后,a的后8位都取反了,但前24位保持不變。這樣值就是245.