C語言問題,if條件裡面按位取反

2021-08-03 21:51:45 字數 957 閱讀 1526

#include int main() 

else

printf("%d",te3);//輸出:2

printf("%u",(char)(~te1));//無符號char 輸出是:0

//無符號char 輸出解析:

//te1:0000 0000 0000 0000 0000 0000 1111 1111

//~te1:1111 1111 1111 1111 1111 1111 0000 0000

//~te1強制轉換char:0000 0000 所以輸出為0

printf("%u",(~te1)); //無符號 輸出是:4294967040

//無符號 輸出解析:

//te1:0000 0000 0000 0000 0000 0000 1111 1111

//~te1:1111 1111 1111 1111 1111 1111 0000 0000

//~te1=二進位制1111 1111 1111 1111 1111 1111 0000 0000=4294967040

printf("%d",(~te1)); //有符號int 輸出是:-256

//有符號 輸出解析:

//te1:0000 0000 0000 0000 0000 0000 1111 1111

//~te1:1111 1111 1111 1111 1111 1111 0000 0000

//由於:~te1開頭為1 是負數 補碼輸出

//~te1=1000 0000 0000 0000 0000 0000 1111 1111 + 1 = -256

if(-256 == (~te1))

else

printf("%d",te3);//輸出:1

//說明在條件語句中(~te1)是按有符號輸出 然後在做比較。

return 0;

}

C語言按位與 按位或 按位異或 按位取反 (一)

與運算 兩者都為1為1,否則為0 1 1 1,1 0 0,0 1 0,0 0 0 或運算 兩者都為0為0,否則為1 1 1 1,1 0 1,0 1 1,0 0 0 非運算 1取0,0取1 1 0,0 1 10001 01110 異或運算 兩者相等為0,不等為1 1 1 0,1 0 1,0 1 1,0...

C語言按位與 按位或 按位異或 按位取反(二)

位運算是指按二進位制進行的運算。在系統軟體中,常常需要處理二進位制位的問題。c語言提供了6個位操作運算子。這些運算子只能用於整型運算元,即只能用於帶符號或無符號的char,short,int與long型別。c語言提供的位運算子列表 運算子 含義 描述 按位與 如果兩個相應的二進位制位都為1,則該位的...

C語言按位取反 的簡單理解

學習按位取反時,一直不是很理解,為啥對0取反就是 1,對76取反就是 77,網上有說記住x x 1就可以了,可還是有點難懂。所以我來解釋一波為啥對0取反就是 1?十進位制數0的十六進製制表示為 0000 0000 對其 取反 後得到 1111 1111 此時這個值轉化為十進位制就是255 此時255...