Ⅰ c語言中取反的問題
1000
0000
0001
0100:原碼
-20
1111
1111
1110
1100:補碼
-20
0000
0000
0001
00
11:補碼取反
19
計算機里存負數是用補碼表示的,取反是反補碼取返,如上所示,補碼取反,連符號位一起變反,成了19;
Ⅱ c語言中『取反加一』是怎麼回事啊
在嵌入式開發中,我們一般選用C語言作為開發語言。一個主要的原因在於C語言提供了大量的運算符,比如我們對硬體的操作一般涉及到對位的操作,而C語言就提供了這樣的運算符,這是其他語言不具備的。
二、C語言運算符有哪些
C語言有大量的運算符,可大致分為以下幾類:括弧與結構體符號、單目、算術、移位、關系、位、邏輯、三目、賦值、逗號。
括弧與結構體符號:括弧包括()、[],結構體符號指的是結構體成員引用時的符號「->」、「.」,他們也是運算符,並且優先順序與括弧相當,這也是我們把兩者放在一起討論的原因。至於如何使用則是結構體的內容。
單目運算符:單目運算符有很多,例如:!邏輯非、~按位取反、++自增、--自減、+正、-負、&求地址運算符、*間址運算符、sizeof()求所佔位元組數、(類型名)強制類型轉換。這些運算符的運算對象只有一個。其中&與*屬於指針內容,我們不做細說。邏輯非我們在下面邏輯運算符時說明,按位取反我們在下面位運算符時說明,強制類型轉換我們在格式轉換時說明。Sizeof()首先不是函數,用於求類型的所佔位元組數。例如:int a;sizeof(a)或sizeof(int)得到的值都是4,即整型佔4個位元組。()中可以是變數也可以是數據類型也可以是字元串常量。例如:char ch[20]=」hello」;我們定義字元數組來保存字元串,當我們要求字元串長度時我們發現sizeof(ch)得到的大小為20,即數組的大小,那麼怎麼求字元串長度呢?我們可以用字元串的相關函數strlen(),但是也可以sizeof(「hello」);它的結果為6,即計算字元串最後的空字元』\0』。++與--是我們經常用到的運算符,簡單來說,有以下四種情況:
a=10,a++ ++在a的後面,先把a的值賦值給表達式,a在自加1。即 a=10,b=a,a=a+1
a=10,++a ++在a的前面,a先自加1,再把a的值賦值給表達式。即 a=10,a=a+1,b=a
a=10,a-- --在a的後面,先把a的值賦值給表達式,a在自減1。即 a=10,b=a,a=a-1
a=10,--a --在a的前面,a先自減1,再把a的值賦值給表達式。即 a=10,a=a-1,b=a
上例中a++/++a/a--/--a代表表達式,我們可以理解為:b=a++/b=++a/b=a--/b=--
Ⅲ 怎樣理解c語言反邏輯思維
你說的是邏輯運算符吧!
在C語言裡面!就是非邏輯符把非0的變為0,把0變為1
Ⅳ C語言中的邏輯取反是「~」符號嗎邏輯或是「|」符號嗎
不是。
~和|都是位運算符號,不是邏輯運算符號。
邏輯 或 是 | |
邏輯 與 是 &&
邏輯 反 是 !
二進制位運算時:
位運算 或 |
位運算 與 &
位運算 反 ~
Ⅳ c語言 !與~ 好像都是取反
!是邏輯取反,只涉及到0和非0(非0並沒有統一的數值)
~是按位取反,就是數值寫成2進制,然後0改成1,1改成0
Ⅵ C語言中的位邏輯運算符'~'是怎麼取反的
計算機裡面都是用補碼表示的
最高位表示符號位:0表示正數,1表示負數
補碼轉換為原碼:
除符號位之外 各位取反末位+1 .對於1 (32位系統int是32位的)
除符號位之外按位取反末位+1 得到 1 =-3
具體的補碼很多書上都有介紹!
Ⅶ c語言,按位取反。
題目有問題 如果是 ~16= -17 的話就是這樣
0001 0000 = 16
~16 = 1110 1111 (計算機內存中就是這樣的,補碼)
1110 1111 = 1001 0001 (補碼轉換源碼就是等於 -17,將補碼全部取反 +1 (注意最前面的1是符號位,不能省去))
如果不要符號位的話 就全部有效 (一個個乘下去 ) 有符號位 前面的1就代表負數
Ⅷ C語言中取反運算符'"!"如何使用
運算符"!"是邏輯非運算符;"~"才是按位取反運算符。
經過"!"運算後,運算結果只有0或1;而經過"~"運算後,結果有多種,取決於操作數。
下面通過實例來介紹這個運算符的使用方法:
inta=10,b,c;
b=!a;//運算後b=0,因為a不等於0(即為真),所以取非後等於0(為假)
c=~a;//運算後c=5,因為a的二進制位1010,按位取反後變為0101(即等於5)
Ⅸ C語言的取反運算符
a=15=
~a=1000=
(計算機以補碼存數據)正數補碼是自身,負數補碼是取反加一,作為補碼,對應原碼,也就是-16