和 的區別 邏輯取反和按位取反

2021-09-08 21:24:56 字數 548 閱讀 6824

在c語言中

! 代表邏輯取反,即把所有非0的數值(相當於1)變為0,0變為1;

~ 表示按位取反,即在數值的二進位制表示方式上,將0變為1,將1變為0;

針對邏輯運算與按位運算區別如下:

針對這個問題,有乙個經典的題目:

int x=3; do while(!(–x));

則上面的程式段,以下哪個選項正確( )

a.輸出的是1

b.輸出的是1和-2

c.輸出的是3和0

d.是死迴圈

答案選擇b。

解析如下:

第一次迴圈:x-=2=3-2=1,所以列印出1,判斷條件:!(–x),–x使得x=0,!(0)條件為true,繼續迴圈

第二次迴圈:x-=2=0-2=-2,所以列印出-2,判斷條件:!(–x),–x使得x=-3,!(-3)條件為false,退出迴圈

python 中按原碼取反 按位取反

在python中,按位運算的結果與c c 中位運算結果不同,原因主要是c c 是按原碼來取反。而在python中,取反的運算的流程是這樣的 先獲得其二進位制 原碼 進行取反操作。將第一步的結果,當作補碼。求這個補碼的原碼,這個原碼就是輸出的結果。補 碼求原碼的過程,先減1,再取反。由於是這樣的邏輯,...

按位取反符

二進位制數在記憶體中以補碼的形式儲存。按位取反 二進位制每一位取反,0變1,1變0。9的計算步驟 轉二進位制 0 1001 計算補碼 0 1001 按位取反 1 0110 轉為原碼 按位取反 1 1001 末位加一 1 1010 符號位為1是負數,即 10 var x 10 在計算機中乙個整型數4位...

按位取反 100 101

首先看等號左邊 100 的二進位制表示為 0110 0100 按位取反的意思就是每一位取反,0變1,1變0 所以 100 的二進位制表示為 1001 1011 所以等號左邊 1001 1011 再看右邊 101.一旦看到出現負數,那麼這個數一定是按有符號數的規則來表示的。乙個二進位制數 按位取反並加...