當前位置:首頁 » 編程語言 » c語言中計算機運算
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言中計算機運算

發布時間: 2022-07-29 00:47:19

『壹』 c語言中算術運算、關系運算、邏輯運算的定義是什麼

算術運算就是指加減乘除和整數的模運算(即取余數運算);
關系運算指比較,有大於、大於等於、小於、小於等於、等於、不等於六種運算;
邏輯運算指兩個條件進行運算,有邏輯與、邏輯或、邏輯非三種。

『貳』 C語言中的計算符號 計算機是怎麼算的

簡單說就是,在計算機中有一個運算器(只可以做減法運算(存在於CPU中))。
定義的b=1,c=5,
在C語言上,系統會把1賦值給b,5賦值給c,存放在內存單元中.(「="是賦值符,1,5為整型數而分配整型單元的內存空間。)
在運算a=b+c時,系統會檢索內存中的b和c的值,之後系統所檢索到的就是a=1+5,
在"1+5"中,系統會進行減法運算,算出1+5的值,然後賦值給a,放在a所在的內存空間中。

『叄』 計算機C語言運算符運算順序問題

C語言中,運算符除了常見的三大類,算術運算符、關系運算符與邏輯運算符之外,還有一些用於完成特殊任務的運算符。

運算符的運算優先順序共分為15 級,1 級最高,15 級最低。 在表達式中,優先順序較高的先於優先順序較低的進行運算。而在一個運算量兩側的運算符 優先順序相同時,則按運算符的結合性所規定的結合方向處理。

一級運算符:標識,常量,字元串文字量,優先順序提升表達式最優先執行。

二級運算符:數組下標運算(expression)、函數調用(argument-expression-list)、成員訪問(identifier、-> identifier)、後綴自增(i++)、後綴自減(i--)、復合初始化(initializer-list)。

三級運算符:前綴自增(++i)、前綴自減(--i)、單目轉型表式式(取地址& ,提領 * , 正號+ ,負號-、位反~ 邏輯否!)、求類型長度(sizeof unary-expression)。

四級運算符:強製表達式成為type-name指定的類型( type-name ) cast-expression。

五級運算符:「 * 」 乘法運算符。

六級運算符:「 + 」加法運算符。

七級運算符:<<左移運算符;>>右移運算符。

八級運算符:<、<=、>、>=關系運算符。

九級運算符:「 == 」等於運算符;「 != 」不等於運算符。

十級運算符:「 & 」按位與運算符。

十一級運算符:「 ∧ 」按位異或運算符。

十二級運算符:「 | 」按位或運算符。

十三級運算符:「&&」邏輯與運算符。

十四級運算符:「 || 」邏輯或運算符。

十五級運算符:? :條件運算符。

『肆』 c語言怎麼進行算術運算

#include "stdio.h" void main() { int a,b,c; scanf("%d%d",&a,&b); c=a+b; printf("%d\n",c); getch(); }

具體如下:
1、簡介C語言是一門通用計算機編程語言,應用廣泛。C語言的設計目標是提供一種能以簡易的方式編譯、處理低級存儲器、產生少量的機器碼以及不需要任何運行環境支持便能運行的編程語言。盡管C語言提供了許多低級處理的功能,但仍然保持著良好跨平台的特性,以一個標准規格寫出的C語言程序可在許多電腦平台上進行編譯,甚至包含一些嵌入式處理器(單片機或稱MCU)以及超級電腦等作業平台。
2、基本介紹
C語言,是一種通用的、過程式的編程語言,廣泛用於系統與應用軟體的開發。具有高效、靈活、功能豐富、表達力強和較高的移植性等特點,在程序員中備受青睞。最近25年是使用最為廣泛的編程語言。
3、運算
C語言的運算非常靈活,功能十分豐富,運算種類遠多於其它程序設計語言。在表達式方面較其它程序語言更為簡潔,如自加、自減、逗號運算和三目運算使表達式更為簡單,但初學者往往會覺的這種表達式難讀,關鍵原因就是對運算符和運算順序理解不透不全。當多種不同運算組成一個運算表達式,即一個運算式中出現多種運算符時,運算的優先順序和結合規則顯得十分重要。在學習中,對此合理進行分類,找出它們與數學中所學到運算之間的不同點之後,記住這些運算也就不困難了,有些運算符在理解後更會牢記心中,將來用起來得心應手,而有些可暫時放棄不記,等用到時再記不遲。

『伍』 C語言中,有哪些算術運算符

C語言中算術運算符有以下這些

實例:

#include<stdio.h>

intmain()

{

inta=21;

intb=10;

intc;

c=a+b;

printf("Line 1 - c 的值是 %d ",c);

c=a-b;

printf("Line 2 - c 的值是 %d ",c);

c=a*b;

printf("Line 3 - c 的值是 %d ",c);

c=a/b;

printf("Line 4 - c 的值是 %d ",c);

c=a%b;

printf("Line 5 - c 的值是 %d ",c);

c=a++; // 賦值後再加 1 ,c 為 21,a 為 22

printf("Line 6 - c 的值是 %d ",c);

c=a--; // 賦值後再減 1 ,c 為 22 ,a 為 21

printf("Line 7 - c 的值是 %d ",c);

return0;

}

當上面的代碼被編譯和執行時,它會產生下列結果:

Line 1 - c 的值是 31
Line 2 - c 的值是 11
Line 3 - c 的值是 210
Line 4 - c 的值是 2
Line 5 - c 的值是 1
Line 6 - c 的值是 21
Line 7 - c 的值是 22

(5)c語言中計算機運算擴展閱讀:

C語言中,除了算數運算符,還提供以下運算符:

1、關系運算符

2、邏輯運算符

3、位運算符

4、賦值運算符

5、雜項運算符

運算符優先順序:

C語言中,運算符的運算優先順序共分為15 級。1 級最高,15 級最低。

在表達式中,優先順序較高的先於優先順序較低的進行運算。而在一個運算量兩側的運算符 優先順序相同時,則按運算符的結合性所規定的結合方向處理。

運算符結合性:

C語言中各運算符的結合性分為兩種,即左結合性(自左至右)和右結合性(自右至左)。例如算術運算符的結合性是自左至右,即先左後右。

如有表達式x-y+z 則y 應先與「-」號結合,執行x-y 運算,然後再執行+z 的運算。這種自左至右的結合 方向就稱為「左結合性」。而自右至左的結合方向稱為「右結合性」。

最典型的右結合 性運算符是賦值運算符。如x=y=z,由於「=」的右結合性,應先執行y=z 再執行x=(y=z)運算。C語言運算符中有不少為右結合性,應注意區別,以避免理解錯誤。

優先順序從上到下依次遞減,最上面具有最高的優先順序,逗號操作符具有最低的優先順序。

所有的優先順序中,只有三個優先順序是從右至左結合的,它們是單目運算符、條件運算符、賦值運算符。其它的都是從左至右結合。

具有最高優先順序的其實並不算是真正的運算符,它們算是一類特殊的操作。()是與函數相關,[]與數組相關,而->及.是取結構成員。

其次是單目運算符,所有的單目運算符具有相同的優先順序,因此在我認為的 真正的運算符中它們具有最高的優先順序,又由於它們都是從右至左結合的,因此*p++與*(p++)等效是毫無疑問的。

『陸』 C語言中的基本運算問題

整數的加減運算

要用8個bit表示正數和負數,一種簡單的思路是把最高位當作符號位(Sign Bit),0表示正1表示負,剩下的七位表示絕對值的大小,這稱為Sign and Magnitude表示法。例如-1表示成10000001,+1表示成00000001。思考一下,N個bit的Sign and Magnitude表示法能夠表示的最大整數和最小整數分別是多少?請寫出算式。

計算機要對這樣的兩個數做加法運算需要處理以下邏輯:

如果兩數符號位相同,就把它們的低7位相加,符號位不變。如果低7位相加時在最高位產生進位,則結果超出7位所能表示的數值范圍,這稱為溢出(Overflow),通常把計算機中的一個標志位置1表示產生溢出。

如果兩數符號位不同,首先比較它們的低7位誰大,然後用大數減小數,結果的符號位和大數相同。

減法運算需要處理以下邏輯:

如果兩數符號位相同,並且低7位是大數減小數,則符號位不變,如果低7位是小數減大數,則按大數減小數計算,結果要變號。

如果兩數符號位不同,把低7位相加,如果是正數減負數則結果為正,如果是負數減正數則結果為負,低7位在相加時可能產生溢出。

這其實和手算加減法的邏輯是相同的。算加減法需要處理這么多邏輯:比較符號位,比較絕對值,加法改減法,減法改加法,小數減大數改成大數減小數……這是非常低效率的。還有一個缺點是0的表示不唯一,既可以表示成10000000也可以表示成00000000,進一步增加了邏輯的復雜性,所以我們迫切需要重新設計數的表示方法,以使計算過程更簡單。

有一種方法可以把減法全部轉化成加法來計算,這樣就不必設計加法器和減法器兩套電路了。我們以十進制減法為例來理解一下這種方法。比如

167-52=167+(999-52)-1000+1=167+947-1000+1=1114-1000+1=114+1=115

首先把52換成999-52,也就是947,這稱為取9的補碼(9's Complement),雖然這也是減法但它不需要借位,只需要對每一位數字分別取補碼,所以比一般的減法要簡單得多。然後把167和947相加,百位上的進位捨去,得到114,然後再加1得到115[22],這就是最終結果了。一句話概括就是:減去一個數等於加上這個數取9的補碼再加1(忽略最高位的進位)。

這種方法也可以類推到二進制加減法:減去一個數等於加上這個數取1的補碼(1's Complement)再加1(忽略MSB的進位)。取1的補碼就是1-1=0,1-0=1,其實相當於把每一位數字取反了,以後將1的補碼簡稱為反碼。比如

00001000-00000100->00001000+11111011+1->00000011+1=00000100

上式的前兩步不是等價變換,所以沒有用=號而是用->表示,第一步多加了一個100000000,第二步少加了一個100000000,效果相互抵消,所以最終結果正是00001000-00000100的結果。現在我們發現,如果把第一步寫成00001000+(-00000100)->00001000+11111011+1,則11111011+1就可以用來表示負數-00000100。所以,補碼表示法不僅可以把減法轉化為加法,而且合理地規定了負數的表示方法,就是「先取反碼再加1」。負數的這種表示稱為2的補碼(2's Complement),以後簡稱為補碼。為什麼稱為2的補碼呢?因為如果對一位數取補碼,則1的補碼是1-1+1=10-1=1,相當於從2裡面減去1。類似地,對00000100取補碼是11111111-00000100+1=100000000-00000100,相當於從100000000(十進制的256)裡面減去00000100。

將負數全部用補碼表示之後,8個bit可以表示的正數有00000000~01111111(十進制的0~127),負數有10000000~11111111(十進制的-128~-1),合起來是十進制的-128~127,一共256個數,而8個bit最多可以表示28=256個不同的數,所以已經充分利用了這8個bit,每個數都只有一種表示,0也只有一種表示就是00000000。我們還發現,所有正數的最高位是0,所有負數的最高位是1,因此最高位仍然具有符號位的含義,要檢查一個數是正是負只要看最高位就可以了,但在計算時卻可以把符號位和數放在一起做加法運算,而不必像Sign and Magnitude表示法那樣對符號位單獨處理。

採用補碼做加減運算時總是忽略MSB的進位,這讓人很不放心:如果在計算過程中忽略進位的效果沒有相互抵消怎麼辦?如果沒有相互抵消,最後的結果肯定是錯的,這種情況一定是由溢出引起的。只要我們有辦法判斷哪些情況會產生溢出,其它情況下都可以放心地忽略MSB的進位。判斷溢出的辦法是這樣的:在相加過程中最高位產生的進位和次高位產生的進位如果相同則沒有溢出,否則就說明產生了溢出。邏輯電路的實現可以把這兩個進位連接到一個異或門,把異或門的輸出連接到溢出標志位。對於8位二進制數的加減運算來說,當計算結果超出-128~127的范圍時就會溢出,例如:

10000010 -126
+ 11111000 + -8
100000000 進位
---------- -----
01111010 = 122?最高位產生的進位是1,次高位產生的進位是0,說明溢出了,計算結果換算成十進制是122,這顯然不對,根本原因是(-126)+(-8)=-134超出了8位二進制數能表示的范圍。

用8個bit既表示正數又表示負數,則能夠表示的范圍是-128~127,如果8個bit全部表示正數,則能夠表示的范圍是0~255,前者稱為有符號數(Signed Number),後者稱為無符號數(Unsigned Number)。但是計算機在做加法時並不區分操作數是有符號數還是無符號數,計算過程都是一樣的,所以上面的例子也可以看作無符號數的加法:

10000010 130
+ 11111000 + 248
100000000 進位
---------- -----
01111010 = 122+256把兩個操作數看作無符號數分別是130和248,計算結果換算成十進制是122,最高位的一個進位相當於256,122+256這個結果是對的。計算機的加法器在做完計算之後,根據最高位產生的進位設置進位標志,同時根據最高位和次高位產生的進位的異或設置溢出標志。至於這個加法到底是有符號數加法還是無符號數加法則取決於程序怎麼理解了,如果程序把它理解成有符號數加法,就去檢查溢出標志,如果程序把它理解成無符號數加法,就去檢查進位標志。通常計算機在做算術運算之後還可能設置另外兩個標志,如果結果為零則設置零標志,如果結果的最高位是1則設置負數標志(只有當理解成有符號數運算時才去檢查這個標志)。

--------------------------------------------------------------------------------

[22] 也可以看作是把百位上的進位加回到個位上去,本來應該加1000,結果加了1,少加了999,正好把先前多加的999抵消了。

『柒』 C語言中能進行數學運算的運算符包括哪些

C語言中能進行數學運算的運算符包括三類:
一、常規的數學運算,包括加(+),減(-),乘(*),除(/),和模除(%)。
形式為
a op b
結果為對應的數學運算結果。
其中模除%又稱作取余,計算a除以b得到的余數,是唯一一個只能用來做整型計算的數學運算符。
二、自加(++)自減(--)運算:
自加和自減屬於單目運算,使用後使變數自加1或者自減1.有前置自加自減和後置自加自減區別。形式為
++a, a++, --a, a--,
四種。
三、帶賦值的運算,即在一中提到的物種運算符加上=,組合成復合運算符+=, -=, *=, /=和%=.
對於這類運算符,形式為
a op b
表示a=a op的前一個符號 b。
比如
a+=b
等效於
a=a+b
這是一類特殊的數學運算操作符。

『捌』 計算機C語言的運算

可以在程序中設置,一般都是用輸入函數輸入~~~

『玖』 關於C語言中計算機的加法運演算法則

x++&&y++
結果為
0&&0
是0,
所以執行
0
||z++,
z++是0,0||0
=0
0&&y++就跳過了y的運算
所以
x=1
y=0
z=1