C語言中的位邏輯運算子是怎麼取反的

2021-03-03 21:41:42 字數 5940 閱讀 2404

1樓:匿名使用者

計算機來裡面都是用補碼表示的

最高源位表示bai

符號位:0表示正數du,1表示負數

補碼轉換為原zhi碼:

除符號位之dao外 各位取反末位+1 .對於1 111111111111111111111111111101(32位系統int是32位的)

除符號位之外按位取反末位+1 得到 1 000000000000000000000000000011 =-3

具體的補碼很多書上都有介紹!

2樓:匿名使用者

取反後的,那個 你把它轉化成 十進位制,

注意,它的最高位是1, ~~~負數,

負數,轉化 十進位制整數 和 正整數方法有點不一樣 呵呵,

c語言中取反運算子'"!"如何使用?

3樓:程式設計師的每一天

c語言經典例子之按位取反運算子

4樓:天雲一號

運算子"!"是邏輯非運算子;"~"才是按位取反運算子。

經過"!"運算後,回運算結果只答

有0或1;而經過"~"運算後,結果有多種,取決於運算元。

下面通過例項來介紹這個運算子的使用方法:

int a=10, b, c;

b = !a; // 運算後b=0,因為a不等於0(即為真),所以取非後等於0(為假)

c = ~a; // 運算後c=5,因為a的二進位制位1010,按位取反後變為0101(即等於5)

5樓:蕭の十三郎

"!"是邏輯取反,, 不是按位取反.就是!12 = 0

比如 !(5 > 3 ) 是假( 0 )

按位取反是"~",,才是第二種的.

6樓:阿蘭達瓦卓瑪

c語言的邏輯非也稱邏輯取反

c語言中!是什麼意思?

7樓:蹉唱朋天韻

#include

"stdio.h"

main()

你會發現得到的是

-2這個東西是

按位取反

比如:假設是八位二進位制

那麼1的二進位制是

0000

0001

,按位反後為

1111

1110

,,這個就是計算機內儲存的結果了

而這個數是多少呢,

注意,最高位為1說明這是個負數

,負數在計算機內是補碼,想知道補碼的十進位制,要換成原碼步驟是,最高不變,其它位取反,最後位加1

所以1000

0001+1=1000

0010

這個二進位制代表-2

可以給出乙個公式

,~n=-(n+1)

8樓:申綠定湃

23的二進位制為:

0000000000010111

(假如是int,為16位的話)

符號為」取反「運算子,

上述二進位製取反後為:

1111111111101000

如果a為int型,其(int16下)十進位制結果c為:

-24如果是int32(int預設為32位)的話,c其實也是為:-24

哈~~而a=23,c=~a,printf("%d",c);是乙個逗號運算子,其結果是最後乙個逗號後的值,

不過不能這樣寫啊,一定要分開!,寫為:

a=23;

c=~a;

printf(c);

9樓:匿名使用者

這是c語言的邏輯運算子:異或

這個**講的非常詳細,我摘抄了一些,詳細的你看以看看。有很例子,好懂!

邏輯運算子把各個運算的變數(或常量)連線起來組成乙個邏輯表示式。

邏輯運算子有4個,它們分別是: !(邏輯非)、 ||(邏輯或)、&&(邏輯與) ^(異或)。在位運算裡面還有 &(位與)、|(位或)的運算。

什麼是邏輯運算--邏輯運算用來判斷一件事情是「對」的還是「錯」的,或者說是「成立」還是「不成立」,判斷的結果是二值的,即沒有「可能是」或者「可能不是」,這個「可能」的用法是乙個模糊概念,在計算機裡面進行的是二進位制運算,邏輯判斷的結果只有二個值,稱這二個值為「邏輯值」,用數的符號表示就是「1」和「0」。其中「1」表示該邏輯運算的結果是「成立」的,如果乙個邏輯表示式的結果為「0」,那麼這個邏輯表示式表達的內容「不成立「。

例 1:通常乙個教室有二個門,這二個門是併排的。要進教室從門a進可以,從門b進教室也行,用一句話來說是「要進教室去,可以從a門進『或者』從b門進」

用邏輯符號來表示這乙個過程--能否進教室用符號c表示,教室門分別為a和b。c的值為1表示可以進教室,為0 表示進不了教室。a和b的值為1時表示門是開的,為0表示門是關著的,列表如下:

說明 c a b

2個教室的門都關著,進不去教室 0 0 0

門b是開著的,可以進去 1 0 1

門a是開著的,可以進去 1 1 0

門a和b都是開著的,可以進去 1 1 1

把表中的過程寫成邏輯運算就是: c = a || b 這就是乙個邏輯表示式,它是乙個「或」運算的邏輯表示式。這個表示式要表達的是這個意思--如果要使得c為1,只要 a「或」b其中之一為 1即可以達到。

所以「||」運算稱為「或」運算。

10樓:亢瑾瑜千淑

~按位取反

即把數值變成二進位制後取反。

結果為-24

23->10111(前面位補零,個數視機子位數而定),取反01000(前面的零變1),輸出格式"%d"

為有符號型。

比如我就用最簡單的8位來說:23->00010111,取反11101000,高位為符號位1,所以是負數,負數在計算機內以反碼形式儲存,反碼=二進位製取反(符號位不變)+1;所以原來的數為11101000-1=11100111,取反:10011000

為-24

11樓:柴奕琛曾風

1.if語句的一般格式

if(表示式)

[else

](1)if語句中的「表示式」必須用「(」和「)」括起來。

(2)else子句(可選)是if語句的一部分,必須與if配對使用,不能單獨使用。

(3)當if和else下面的語句組,僅由一條語句構成時,也可不使用復合語句形式(即去掉花括號)。

2.if語句的執行過程

(1)預設else子句時

當「表示式」的值不等於0(即判定為「邏輯真」)時,則執行語句組1,否則直接轉向執行下一條。

(2)指定else子句時

當「表示式」的值不等於0(即判定為「邏輯真」)時,則執行語句組1,然後轉向下一條語句;否則,執行語句組2。如圖4-1(b)所示。

3.if語句的巢狀與巢狀匹配原則

if語句允許巢狀。所謂if語句的巢狀是指,在「語句組1」或(和)「語句組2」中,又包含有if語句的情況。

if語句巢狀時,else子句與if的匹配原則:與在它上面、距它最近、且尚未匹配的if配對。

為明確匹配關係,避免匹配錯誤,強烈建議:將內嵌的if語句,一律用花括號括起來。

12樓:呼延文玉登嫣

好像有兩個地方用到,

1、三目運算子,max=a>b?a:b;這個?是判斷a>b的條件成立與否,

2、就是字串的匹配問題時是個萬用字元,表示乙個任意字元,-----that's

all,thank

you,哈哈哈。。。。

13樓:暴凝荷冒婧

23對就2進製(16位編譯系統)為:00000000

0001

0111

~表示按位取反,~a為:1111

1111

1110

1000,這個數是-24的補碼,printf("%d",c);就是輸出這個數。

14樓:匿名使用者

1、做為運算子!是邏輯「非」。

2、!=整個表示邏輯運算子「不等於」。

15樓:烏雅季同曲良

位運算not

由否定號(~)表示

位運算not

是三步的處理過程:

把運算數轉換成

32位數字

把二進位制數轉換成它的二進位制反碼

把二進位制數轉換成浮點數

16樓:壽菊月鄭贊

這個是c語言的乙個三目運算子

17樓:曾楊氏汝雁

簡單的說就是電腦程式設計◆

c語言功能強大,本書涉及知識結構全面、合理。是一門非常好的程式語言基礎語言。

◆c是一門學習邏輯、程式演算法、演算法實現很好的教程。通過第一學期c語言的學習,從而可以了解程式的設計編碼的過程。

◆c是一單程序、單執行緒執行,從頭到尾執行,學習難不小。但結構嚴謹的高階語言,可以很好學習程式設計規範和要求。

◆c語言是為以後學習其它語言打下基礎的語言

18樓:甕仁苑婉

賦值,將等號右邊的值附加到等號左邊的變數

inta,b;//宣告變數

a=100;

b=a-4;//b的值為96

a=b/4;//a的值為24

19樓:操起雲程錦

c語言的發展過程

c語言是在70年代初問世的。一九七八年由美國**電報公司(at&t)貝爾實驗室正式發表了c語言。同時由b.

w.kernighan和d.m.

ritchit合著了著名的「the

cprogramming

language」一書。通常簡稱為《k&r》,也有人稱之為《k&r》標準。但是,在《k&r》中並沒有定義乙個完整的標準c語言,後來由美國國家標準學會在此基礎上制定了乙個c

語言標準,於一九八三年發表。通常稱之為ansi

c。當代最優秀的程式語言

早期的c語言主要是用於unix系統。由於c語言的強大功能和各方面的優點逐漸為人們認識,到了八十年代,c開始進入其它作業系統,並很快在各類大、中、小和微型計算機上得到了廣泛的使用。成為當代最優秀的程式語言之一。

c語言的特點

c語言是一種結構化語言。它層次清晰,便於按模組化方式組織程式,易於除錯和維護。c語言的表現能力和處理能力極強。

它不僅具有豐富的運算子和資料型別,便於實現各類複雜的資料結構。它還可以直接訪問記憶體的實體地址,進行位(bit)一級的操作。由於c語言實現了對硬體的程式設計操作,因此c語言集高階語言和低階語言的功能於一體。

既可用於系統軟體的開發,也適合於應用軟體的開發。此外,c語言還具有效率高,可移植性強等特點。因此廣泛地移植到了各類各型計算機上,從而形成了多種版本的c語言。

c語言版本

目前最流行的c語言有以下幾種:

·microsoftc或稱

msc·borland

turboc或稱

turbo

c·at&t

c這些c語言版本不僅實現了ansi

c標準,而且在此基礎上各自作了一些擴充,使之更加方便、完美。

物件導向的程式語言

在c的基礎上,一九八三年又由貝爾實驗室的bjarne

strou-strup推出了c++。

c++進一步擴充和完善了c語言,成為一種面向

物件的程式語言。c++目前流行的最新版本是borland

c++4.5,symantec

c++6.1,和microsoft

visualc++

2.0。c++提出了一些更為深入的概念,它所支援的這些物件導向的概念容易將問題空間直接地對映到程式空間,為程式設計師提供了一種與傳統結構程式設計不同的思維方式和程式設計方法。

因而也增加了整個語言的複雜性,掌握起來有一定難度。

c和c++

但是,c是c++的基礎,c++語言和c語言在很多方面是相容的。因此,掌握了c語言,再進一步學習c++就能以一種熟悉的語法來學習物件導向的語言,從而達到事半功倍的目的。

C語言運算子C語言運算子是怎麼運算的

內容來自使用者 wjian178 e68a84e8a2ad62616964757a686964616f31333433646432 1級優先順序 左結合 圓括號 下標運算子 指向結構體成員運算子 結構體成員運算子。2級優先順序 右結合 邏輯非運算子 按位取反運算子 字首增量運算子 字首減量運算子 正...

c 邏輯或有什麼問題,c 中邏輯運算子的問題。

是這樣的 1.或運算是只要有乙個條件滿足 則結果為true2.while語句括號裡面的表示式為true 則繼續迴圈按照你的意思應該是a n或者b m就跳出迴圈但你的表示式意思是 當a n或者b m則繼續執行 所以會出現要兩個都數對了才跳出迴圈 解決方法 1.像你說的那樣 換成與符號 2.整個表示式括...

c語言中18怎麼算?是按位異或運算子

1和8都是int型,且都是正整數,記憶體中原碼形式儲存 1的原碼是00000000 00000000 00000000 0000001 8的原碼是00000000 00000000 00000000 0001000 按位異或,顧名思義是對應的二進位制位計算,口訣相同0,相異為1.就是對應的二進位制位...