1樓:程式設計師的每一天
c語言經典例子之按位取反運算子
2樓:天雲一號
運算子"!"是邏輯非運算子;"~"才是按位取反運算子。
經過"!"運算後,回運算結果只答
有0或1;而經過"~"運算後,結果有多種,取決於運算元。
下面通過例項來介紹這個運算子的使用方法:
int a=10, b, c;
b = !a; // 運算後b=0,因為a不等於0(即為真),所以取非後等於0(為假)
c = ~a; // 運算後c=5,因為a的二進位制位1010,按位取反後變為0101(即等於5)
3樓:蕭の十三郎
"!"是邏輯取反,, 不是按位取反.就是!12 = 0
比如 !(5 > 3 ) 是假( 0 )
按位取反是"~",,才是第二種的.
4樓:阿蘭達瓦卓瑪
c語言的邏輯非也稱邏輯取反
c語言中取反符號怎麼打出來的
5樓:非常可愛
~||c語言中取反符號是
~。c語言運算子:
1.算術運算子:*-+/%
2.關係運算子:><==!
版=>=<=
3.邏輯運權算符:!&&||
4.位運算子:<<>>~|^&
5.賦值運算子:=及擴充套件賦值運算子
6.條件運算子:?:
7.逗號運算子:,
8.指標運算子:*和&
9.求位元組數運算子:sizeof
10.強制型別轉換運算子:(型別)
擴充套件資料c語言中取反符號的使用
a=23,c=~a,printf("%d",c);
#include
intmain()
6樓:匿名使用者
c語言取反操作為位抄操作一種,其符號為~。
位於鍵盤左上角,esc鍵下方,有一個上面為~ 下面為`的鍵,~符號就是用這個鍵打出來的。
方法為1 按住shift鍵,左右均可。
2 按~鍵,即之前說的鍵。
3 抬起shift鍵。
~操作為單目操作,即只需要一個運算元。結果為運算元按位取反,原值某位上值為1,結果對應位上值為0;否則結果對應位上值為1。
比如 ~0x87 = 0x78
7樓:匿名使用者
按住shift與esc鍵正下方那個鍵就可以打出來了
c語言中的位邏輯運算子'~'是怎麼取反的
8樓:匿名使用者
計算機來裡面都是用補碼錶示的
最高源位表示bai
符號位:0表示正數du,1表示負數
補碼轉換為原zhi碼:
除符號位之dao外 各位取反末位+1 .對於1 111111111111111111111111111101(32位系統int是32位的)
除符號位之外按位取反末位+1 得到 1 000000000000000000000000000011 =-3
具體的補碼很多書上都有介紹!
9樓:匿名使用者
取反後的,那個 你把它轉化成 十進位制,
注意,它的最高位是1, ~~~負數,
負數,轉化 十進位制整數 和 正整數方法有點不一樣 呵呵,
c語言中的位運算子中『按位取反』是怎麼運算的
10樓:非常可愛
使用~按位取反運算的時候,計算機會將運算元所對應的二進位制表示式的每一版
個位進行取反權計算,取反後所得到的值就是~按位取反的運算結果。
例如,假如計算機是32位的,接下來要計算~5的值,計算過程如下:
5 的二進位制表示式為:0000 0000 0000 0000 0000 0000 0000 0101
執行~運算,即~5後: 1111 1111 1111 1111 1111 1111 1111 1010,即結果為-6
以上過程沒有任何問題,但如果忘記了負數的二進位制表達方式,那麼就會對這個結果產生疑問,為什麼1111 1111 1111 1111 1111 1111 1111 1010表示-6,可能會以為它應該表示-10等等,所以,使用~按位取反的另一個關鍵就是理解1111 1111 1111 1111 1111 1111 1111 1010為什麼表示-6,也即理解負數的二進位制表達方式。
擴充套件資料
js取整
~是按位取反運算,~~是取反兩次
在這裡~~的作用是去掉小數部分
因為位運算的操作值要求是整數,其結果也是整數,所以經過位運算的都會自動變成整數
除了~~n 還可以用
n<<0
n>>0n|0
11樓:程式設計師的每一天
c語言經典例子之按位取反運算子
12樓:匿名使用者
位運算中的按位取
抄反操作,使襲用的運算子為~, 其計算原則為:
按照運算元的二進位制值,逐位計算,如果原始值為0,則結果該位上為1, 否則結果該位上為0。
比如char型別的0x78按位取反
~0x78
=~b0111 1000//轉為二進位制值。
=b1000 0111//按位取反。
=0x87
13樓:匿名使用者
~1010的反碼bai是0101
而負數在計
du算機中的表zhi示是用補碼dao,-11求補碼過程:1011取反->0100加1->0101
即專-11等價於~10
括號中的屬是0101
補充說明:是這樣的,1010在32位計算機中的儲存實際上是00001010,取反後是11110101,在計算機中首位是0表示正數,是1表示負數,即11110101表示的是一個負數,即要由11110101求這個負數,即求補碼的逆,步驟:先減1得11110100,再取反,取反時符號位不變,得10001011,即-11。
用4位表示的話可以填0101,或者是8位的11110101
14樓:匿名使用者
計算機儲存的數不是隻有4位的
像32位計算機,儲存int型別的數就用32位所以上面10的二進位制碼專1010,前面還有好屬多0,取反的時候要一起取反
簡單的話,以8位二進位制碼為例
括號中就是11110101,也就是00001010取反的結果這是補碼
-10的補碼是10的補碼(正數的補碼就是原碼)取反加1既然這裡只取反沒加1,所以就是-10-1=-11數轉補碼
正數就是二進位制碼
負數是相反數(即取絕對值)的二進位制碼取反加1補碼轉數
正數(二進位制最高位為0)直接轉
負數(二進位制最高位為1)減1取反轉成十進位制進位制數再加個負號
c語言中的位運算子是怎麼取反的
15樓:匿名使用者
a為int型別 通常佔4個位元組
2的原碼:0000 0000 0000 0000 0000 0000 0000 0010
取反: 1111 1111 1111 1111 1111 1111 1111 1101
最高位是1所以是負數,求其原始資料,方法是
再次取反加1(符號位不變)
取反: 1000 0000 0000 0000 0000 0000 0000 0010
加1 1000 0000 0000 0000 0000 0000 0000 0011
所以是 -3
c語言中有哪些算術運算子C語言中有哪些算術運算子
c語言中算術運算子有以下這些 例項 include int main 當上面的 被編譯和執行時,它會產生下列結果 line 1 c 的值是 31 line 2 c 的值是 11 line 3 c 的值是 210 line 4 c 的值是 2 line 5 c 的值是 1 line 6 c 的值是 2...
c語言移位運算子怎麼用,C語言移位運算子怎麼用?
這是c 好吧。算了c和c 的移位運算子都一樣 這個難道不對嗎,左移就是 2啊 不越界的話 原理就是你把1110化成二進位制 000010001010110 然後每個位都向左移一位,最低位補0,次高位捨棄 最高位是符號位,不能動 x 1 相當於乘以2 假如 x 8,對二進位制來說就是00001000,...
C語言逗號的作用C語言中逗號運算子怎麼用
c語言中,多個表示式可 以用逗號分開,其中用逗號分開的表示式的值分別結算,但整個表示式的值是最後一個表示式的值。假設b 2,c 7,d 5,a1 b,c d 3 a2 b,c d 3 對於第一行 有三個表示式,用逗號分開,所以最終的值應該是最後一個表示式的值,也就是d 3,為8,所以a1 8。對於第...