国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【C語言初階】帶你輕松玩轉(zhuǎn)所有常用操作符(1) ——算數(shù)操作符,移位操作符,位操作符

這篇具有很好參考價值的文章主要介紹了【C語言初階】帶你輕松玩轉(zhuǎn)所有常用操作符(1) ——算數(shù)操作符,移位操作符,位操作符。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

【C語言初階】帶你輕松玩轉(zhuǎn)所有常用操作符(1) ——算數(shù)操作符,移位操作符,位操作符,0基礎(chǔ)C語言,c語言,開發(fā)語言,算法,c++

君兮_的個人主頁

勤時當勉勵 歲月不待人

C/C++ 游戲開發(fā)


Hello,這里是君兮_,最近要準備期末復(fù)習(xí)了,可能更新的就不會那么頻繁了,下個星期恢復(fù)正常更新。

前言

今天給大家?guī)淼氖遣僮鞣斀?,由于這部分的內(nèi)容比較多,可能會分成幾部分講,今天帶來的是第一部分的內(nèi)容,廢話不多說,咱們開始吧!

一.操作符的分類

  • 操作符大致分為以下幾種
  • 算術(shù)操作符
  • 移位操作符
  • 位操作符
  • 賦值操作符
  • 單目操作符
  • 關(guān)系操作符
  • 邏輯操作符
  • 條件操作符
  • 逗號表達式
  • 下標引用、函數(shù)調(diào)用和結(jié)構(gòu)成員
  • 咱們還是先畫個圖來說明,具體的再一個一個介紹用法及使用場景
    【C語言初階】帶你輕松玩轉(zhuǎn)所有常用操作符(1) ——算數(shù)操作符,移位操作符,位操作符,0基礎(chǔ)C語言,c語言,開發(fā)語言,算法,c++

二.算數(shù)操作符

   +   -  *  /  %
    1. 除了 % 操作符之外,其他的幾個操作符可以作用于整數(shù)和浮點數(shù)。
    1. 對于 / 操作符如果兩個操作數(shù)都為整數(shù),執(zhí)行整數(shù)除法。而只要有浮點數(shù)執(zhí)行的就是浮點數(shù)除法。
    1. % 操作符的兩個操作數(shù)必須為整數(shù)。返回的是整除之后的余數(shù)。
  • 我們來通過一段代碼理解一下:
#include<stdio.h>
int main()
{
	int r = 7 / 2;
	printf("%d\n", r);
	double d = 7 / 2;
	printf("%lf\n", d);//3.5?
	double d1 = 7.0 / 2.0;
	printf("%lf\n", d1);//3.5?

	return 0;
}
  • 運行結(jié)果
    【C語言初階】帶你輕松玩轉(zhuǎn)所有常用操作符(1) ——算數(shù)操作符,移位操作符,位操作符,0基礎(chǔ)C語言,c語言,開發(fā)語言,算法,c++
  • 大家可能對打印的第一個數(shù)字和第三個數(shù)字都沒什么疑問,唯一有問題的就是為什么第二個后面的小數(shù)部分被省去了,接下來我來講講原因
  • 我們可以看到7和2都是整數(shù),那么執(zhí)行的就是整數(shù)除法,在整形中是不存在小數(shù)的,因此小數(shù)點后面的部分會被直接舍去,此時我們又把7/2得到的3賦給一個浮點型的d,打印出來是要保留小數(shù)后面的幾位的,因此打印出來的才是屏幕上的結(jié)果
  • 總結(jié):
  • 當你想要進行浮點數(shù)除法時,除號兩邊的數(shù)得至少有一個浮點型!?。?/strong>

三.移位操作符

<< 左移操作符
>> 右移操作符
 
注:移位操作符的操作數(shù)只能是整數(shù)。
  • 在講這方面內(nèi)容之前,先給大家簡單的補充一些數(shù)據(jù)在內(nèi)存中存儲的知識,方便大家下面更好的理解,如果你想更具體的了解這方面的知識,不妨去看看我的這兩篇博客,以下是鏈接:
    【C語言進階】納尼?這樣學(xué)數(shù)據(jù)在內(nèi)存中的存儲竟然如此簡單(1)?
    【C語言進階】納尼?這樣學(xué)數(shù)據(jù)在內(nèi)存中的存儲竟然如此簡單(2)?

整型在內(nèi)存中是以二進制的形式存儲的,而內(nèi)存中存儲的是補碼,并且是倒著存的。

現(xiàn)在我來具體解釋一下上面這段話。

1.二進制表示的三種形式

  • 二進制在內(nèi)存中表示形式分別是原碼,反碼,補碼。
  • 其中,數(shù)據(jù)在內(nèi)存中是以二進制補碼的形式進行存儲的
  • 以下面的代碼說明

int main()
{
	
	int num  = 10;//創(chuàng)建一個整型變量,叫num,這時num向內(nèi)存申請4個字節(jié)來存放數(shù)據(jù)
	//4個字節(jié)-32比特位
	//00000000000000000000000000001010-原碼
	//00000000000000000000000000001010-反碼
	//00000000000000000000000000001010-補碼

	int num2 = -10;//
	//10000000000000000000000000001010 - 原碼
	//11111111111111111111111111110101 - 反碼
	//11111111111111111111111111110110 - 補碼
	


	return 0;
}
  • 十進制數(shù)據(jù)的二進制表現(xiàn)形式就是原碼,原碼最左邊的一個數(shù)字就是符號位,0為正,1為負。
  • 對于正數(shù)而言,原碼反碼補碼三者相同,對于負數(shù)而言,反碼為原碼符號位不變,其他位取反(1變?yōu)?,0變?yōu)?)
  • 對于負數(shù)而言,補碼為反碼+1。

2.左移操作符 <<

  • 移位規(guī)則
    左邊拋棄,右邊補零
  • 注意,以下我們所說的移位,移動的都是補碼的二進制序列
int main()
{

	int num = 10;//創(chuàng)建一個整型變量,叫num,這時num向內(nèi)存申請4個字節(jié)來存放數(shù)據(jù)
	//4個字節(jié)-32比特位
	//00000000000000000000000000001010-原碼
	//00000000000000000000000000001010-反碼
	//00000000000000000000000000001010-補碼
	int b=num << 1;
	//00000000000000000000000000010100-補碼
	printf("%d\n", num);
	printf("%d\n", b);

	
	return 0;
}

【C語言初階】帶你輕松玩轉(zhuǎn)所有常用操作符(1) ——算數(shù)操作符,移位操作符,位操作符,0基礎(chǔ)C語言,c語言,開發(fā)語言,算法,c++

  • 注意,移位操作并不會改變原來變量的大?。。?/font>

3.右移操作符 >>

  • 移位規(guī)則:
  • 首先右移運算分兩種:
  • 1. 邏輯移位
    左邊用0填充,右邊丟棄
  • 2. 算術(shù)移位
    左邊用原該值的符號位填充,右邊丟棄
int main()
{

	int num = 10;
	
	//邏輯右移 左邊用0填充,右邊丟棄
	//00000000000000000000000000001010-補碼
	int b=num >> 1;
	//00000000000000000000000000000101-補碼
	printf("%d\n", num);
	printf("%d\n", b);
	//算數(shù)右移 左邊用原該值的符號位填充,右邊丟棄
	int num1 = -1;
	//10000000000000000000000000000001-原碼
	//11111111111111111111111111111110-反碼
	//11111111111111111111111111111111-補碼
	int c = num1 >> 1;
	printf("%d", c);
	
	return 0;
}


  • C語言沒有明確規(guī)定是邏輯右移還是算術(shù)右移,但是一般編輯器采用的都是算術(shù)右移
    【C語言初階】帶你輕松玩轉(zhuǎn)所有常用操作符(1) ——算數(shù)操作符,移位操作符,位操作符,0基礎(chǔ)C語言,c語言,開發(fā)語言,算法,c++
  • 如圖可見,我們當前編譯器采用的是邏輯右移,否則符號位應(yīng)該變?yōu)?打印出來的應(yīng)該是一個正數(shù)。

4.錯誤的寫法

  • 另外,要注意這種寫法:
int main()
{
	int a = 5;
	int b = a >> -2;//標準未定義行為

	return 0;
}

  • 有些人可能腦子一抽,突然想到,我右移一個負數(shù)不就是左移嗎?
  • 注意:對于移位運算符,不要移動負數(shù)位,這個是標準未定義行為??!

四.位操作符

  • 位操作符有:
 & //按位與
 | //按位或
 ^ //按位異或
  • 注:他們的操作數(shù)必須是整數(shù)
  • 以下位操作符對應(yīng)操作的仍然是二進制補碼

1.& 按位與

& 按位與 ---- 對應(yīng)二進制位有0則為0,兩個同時為1,才是1

int main()
//{
//	int a = 3;
//	//00000000000000000000000000000011 - 補碼
//	int b = -5;
//	//10000000000000000000000000000101
//	//11111111111111111111111111111010
//	//11111111111111111111111111111011 - 補碼
//	//
//	int c = a & b;
//	//& -- 對應(yīng)二進制位有0則為0,兩個同時為1,才是1
//	//00000000000000000000000000000011
//	//11111111111111111111111111111011
//	//00000000000000000000000000000011 - 補碼
//	//
//	printf("%d\n", c);//3
//
//	return 0;
//}

【C語言初階】帶你輕松玩轉(zhuǎn)所有常用操作符(1) ——算數(shù)操作符,移位操作符,位操作符,0基礎(chǔ)C語言,c語言,開發(fā)語言,算法,c++


2.| 按位或

| 按位或 ---- 對應(yīng)的二進制位有1則為1,兩個同時為0才是0

int main()
{
	int a = 3;
	//00000000000000000000000000000011 - 補碼
	int b = -5;
	//10000000000000000000000000000101
	//11111111111111111111111111111010
	//11111111111111111111111111111011 - 補碼
	//
	int c = a | b;
	//| - 按(2進制)位或 - 對應(yīng)的二進制位有1則為1,兩個同時為0才是0
	//00000000000000000000000000000011
	//11111111111111111111111111111011
	//11111111111111111111111111111011 - 補碼
	//11111111111111111111111111111010
	//10000000000000000000000000000101 - -5
	printf("%d\n", c);//3

	return 0;
}

【C語言初階】帶你輕松玩轉(zhuǎn)所有常用操作符(1) ——算數(shù)操作符,移位操作符,位操作符,0基礎(chǔ)C語言,c語言,開發(fā)語言,算法,c++


3.^ 按位異或

^ 按位異或 ----對應(yīng)的二進制位相同為0,相異為1

int main()
{
	int a = 3;
	//00000000000000000000000000000011 - 補碼
	int b = -5;
	//10000000000000000000000000000101
	//11111111111111111111111111111010
	//11111111111111111111111111111011 - 補碼
	//
	int c = a ^ b;
	//^ - 按二進制位異或 -對應(yīng)的二進制位相同為0,相異為1
	//00000000000000000000000000000011
	//11111111111111111111111111111011
	//11111111111111111111111111111000 - 補碼
	//11111111111111111111111111110111
	//10000000000000000000000000001000 - -8
	printf("%d\n", c);//3

	return 0;
}

【C語言初階】帶你輕松玩轉(zhuǎn)所有常用操作符(1) ——算數(shù)操作符,移位操作符,位操作符,0基礎(chǔ)C語言,c語言,開發(fā)語言,算法,c++


4.位操作符應(yīng)用實例

  • 看了上面的內(nèi)容,可能有些人會有疑問,這些位操作符具體都有啥用呢?
  • 以下我們來通過幾個例子說明:
  • 1.我們先來看一個簡單的例子
int main()
{
int num1 = 1;
int num2 = 2;
num1 & num2;
num1 | num2;
num1 ^ num2;
return 0;
}
  • 上面的這段代碼a,b,c的結(jié)果是多少?
    【C語言初階】帶你輕松玩轉(zhuǎn)所有常用操作符(1) ——算數(shù)操作符,移位操作符,位操作符,0基礎(chǔ)C語言,c語言,開發(fā)語言,算法,c++
  • 很簡單吧?遇到這種問題一定不要偷懶,畫圖是最好的解決方法!
  • 2.在不創(chuàng)建臨時變量(第三個變量)的情況下,實現(xiàn)兩個數(shù)的交換。
  • 這其實是某公司的一個面試題,如果你能理解上面所講的內(nèi)容并學(xué)會應(yīng)用,其實并不復(fù)雜。
  • 實現(xiàn)代碼如下:
//在不創(chuàng)建臨時變量(第三個變量)的情況下,實現(xiàn)兩個數(shù)的交換。
int main()
{
	int a = 10;
	00000000000000000000000000001010--10的補碼
	int b = 20;
	00000000000000000000000000010100--20的補碼
	a = a ^b;
	b = a ^ b;
	a = a ^ b;
	printf("a=%d b=%d", a, b);
	return 0;
}

【C語言初階】帶你輕松玩轉(zhuǎn)所有常用操作符(1) ——算數(shù)操作符,移位操作符,位操作符,0基礎(chǔ)C語言,c語言,開發(fā)語言,算法,c++

  • 成功實現(xiàn)我們的目標,可是為什么呢?
  • 下面我來解釋一下,如果你是基礎(chǔ)不是特別好的初學(xué)者的話,這里還是建議自己先畫圖感受一下哦!
	a = a ^b;
	//00000000000000000000000000001010--a
	//00000000000000000000000000010100--b
	//00000000000000000000000000011110--a=a^b
  • 此時a已經(jīng)變成了a ^b

	b = a ^ b;
	//00000000000000000000000000010100--b
	//00000000000000000000000000011110--a=a^b
	//00000000000000000000000000001010-b=a^b    
  • 此時的b已經(jīng)與a完成交換變成10了
a = a ^ b;
	//00000000000000000000000000011110--a=a^b
	//00000000000000000000000000001010-b=a^b 
	//00000000000000000000000000010100 a=a^b a=20
  • 最后一次異或,把b的值交換給a
  • 逐步分析這段代碼是不是就清晰多了?

總結(jié)

  • 今天的內(nèi)容暫時到這里就結(jié)束了,我們今天講了有關(guān)算數(shù)操作符,移位操作符和位操作符的應(yīng)用,如果你還有所困惑不妨自己動手實操一下,這方面的知識是稍微有點抽象,需要咱們反復(fù)的練習(xí)熟悉起來才行。
  • 以上就是關(guān)于操作符的第一部分內(nèi)容,后面其他的操作符應(yīng)用詳解會在近期分批次更新,敬請期待??!
  • 好了,如果你有任何疑問歡迎在評論區(qū)或者私信我提出,大家下次再見啦!

新人博主創(chuàng)作不易,如果感覺文章內(nèi)容對你有所幫助的話不妨三連一下這個新人博主再走唄。你們的支持就是我更新的動力?。?!

**(可莉請求你們?nèi)B支持一下博主!?。↑c擊下方評論點贊收藏幫幫可莉吧)**

【C語言初階】帶你輕松玩轉(zhuǎn)所有常用操作符(1) ——算數(shù)操作符,移位操作符,位操作符,0基礎(chǔ)C語言,c語言,開發(fā)語言,算法,c++文章來源地址http://www.zghlxwxcb.cn/news/detail-515874.html

到了這里,關(guān)于【C語言初階】帶你輕松玩轉(zhuǎn)所有常用操作符(1) ——算數(shù)操作符,移位操作符,位操作符的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 【C語言初階(16)】操作符2

    【C語言初階(16)】操作符2

    在 C 語言中,使用關(guān)系操作符來判斷兩個數(shù)之間的大小關(guān)系。 關(guān)系運算符都是雙目運算符 ,其結(jié)合性均為從左到右。 關(guān)系運算符的優(yōu)先級低于算術(shù)運算符,高于賦值運算符。 邏輯運算符獲得的是一個邏輯值, 邏輯值只有 “ 真 ” 或 “ 假 ”兩種狀態(tài) 。 運算符 含義 優(yōu)先級

    2024年02月16日
    瀏覽(64)
  • 【C語言初階(七)】操作符詳解

    【C語言初階(七)】操作符詳解

    ??博主CSDN主頁:杭電碼農(nóng)-NEO?? ? ?專欄分類:C語言學(xué)習(xí)分享? ? ??代碼倉庫:NEO的學(xué)習(xí)日記?? ? ??關(guān)注我??帶你學(xué)習(xí)更多C語言知識 ? ???? 我們已經(jīng)在了解C語言的內(nèi)一章節(jié)熟悉了所有的操作符了解C語言.其實操作符還有一些更細節(jié)更有用的延申內(nèi)容,本章就給大家?guī)?/p>

    2024年02月09日
    瀏覽(43)
  • 『C語言初階』第六章-操作符詳解

    『C語言初階』第六章-操作符詳解

    ?? 博客主頁 : 小羊失眠啦. ?? 系列專欄 : C語言 ??? 每日語錄 : 業(yè)精于勤,荒于嬉。 ?? 感謝大家點贊??收藏?評論?? 今天小羊又來為鐵汁們更新C語言初階的操作符詳解,我們在平時寫代碼時總會寫到一些算術(shù)操作符和賦值操作符,可是當鐵汁們遇到其他的操作

    2024年02月14日
    瀏覽(27)
  • 【初階C語言】操作符2---表達式求值

    【初階C語言】操作符2---表達式求值

    前言:本節(jié)重點介紹操作符的使用,如,優(yōu)先級高低、類型轉(zhuǎn)換等 前言:邏輯操作符包括 邏輯與() 和 邏輯或(||) ,操作對象:兩個 1.邏輯與() (1)定義 的字面意思就是并且。如:AB,需要A和B同時成立,整體才成立。 (2)圖形解釋 ?0表示假,所以需要A和B同時滿足

    2024年02月09日
    瀏覽(26)
  • 【C語言初階】操作符之 位運算符詳解(“ << ”,“ >> ”,“ & ”,“ | ”,“ ^ ”,“ ~ ”)

    【C語言初階】操作符之 位運算符詳解(“ << ”,“ >> ”,“ & ”,“ | ”,“ ^ ”,“ ~ ”)

    目錄 C語言中六種位運算符: 一、位移運算符 1、移位運算符簡介 2、先要了解一點 3、 左移運算符 4、右移運算符 5、警告 二、 1、 按位與 2、| 按位或 3、^ 按位異或 4、~ 取反 4、例子? 按位與 | 按位或 ^ 按位異或 ~取反 右移 左移 位運算符用來對二進制位進行操作,C語言中

    2024年02月06日
    瀏覽(28)
  • 【一篇文章帶你重溫重點】C語言操作符

    【一篇文章帶你重溫重點】C語言操作符

    文章目錄 ??算術(shù)操作符 ??移位操作符 ??位操作符 ??賦值操作符 ??單目操作符 ??關(guān)系操作符 ??邏輯操作符 加( + ) 減( - )乘( * )除( / ) 取模( % ) 算術(shù)操作符是我們?nèi)粘S玫淖疃嗟?,也是大家最熟悉不過的。 ??要注意以下幾點 1. 除了 % 操作符之外,其他的

    2023年04月16日
    瀏覽(46)
  • C語言位操作符常用

    1, 交換兩個變量的值 2, 求二進制中1的個數(shù): 3, 求二進制中0的個數(shù) 4,求一個數(shù)的絕對值 5, 求一個數(shù)的相反數(shù) 6, 判斷一個數(shù)的奇偶性 7,求兩個數(shù)的平均數(shù) 8,從無符號類型x的第p位開始, 取n位數(shù)

    2024年02月09日
    瀏覽(20)
  • 【C語言初階】帶你輕松掌握指針基礎(chǔ)知識(1)——指針的定義,類型,大小

    【C語言初階】帶你輕松掌握指針基礎(chǔ)知識(1)——指針的定義,類型,大小

    君兮_的個人主頁 勤時當勉勵 歲月不待人 C/C++ 游戲開發(fā) Hello,這里是君兮_,最近剛回家有點懶,從今天開始恢復(fù)更新并開始更新新的刷題系列,我們先繼續(xù)更新0基礎(chǔ)入門C語言的內(nèi)容,今天給大家?guī)淼氖侵羔樂矫娴膬?nèi)容,但由于是初階,一些高級的用法我們放在進階篇再講

    2024年02月12日
    瀏覽(32)
  • 《C語言初階篇》循環(huán)語句還沒搞懂?這篇文章帶你輕松學(xué)會循環(huán)語句!

    《C語言初階篇》循環(huán)語句還沒搞懂?這篇文章帶你輕松學(xué)會循環(huán)語句!

    ?? 鴿芷咕 :個人主頁 ??? 個人專欄 :《C語言初階篇》 《C語言進階篇》 ??生活的理想,就是為了理想的生活! ?? ?? hello! 各位寶子們大家好啊,又是新的一天開始了,今天給大家?guī)淼难h(huán)語句的全面講解! ?? ?? 歷時一天終于給肝出來了,本文詳細講解了wh

    2024年02月15日
    瀏覽(28)
  • 【C語言初階】帶你輕松掌握指針基礎(chǔ)知識完結(jié)篇——野指針,指針運算,指針和數(shù)組,二級指針

    【C語言初階】帶你輕松掌握指針基礎(chǔ)知識完結(jié)篇——野指針,指針運算,指針和數(shù)組,二級指針

    君兮_的個人主頁 勤時當勉勵 歲月不待人 C/C++ 游戲開發(fā) Hello,這里是君兮_,今天繼續(xù)給大家更新0基礎(chǔ)入門C語言的內(nèi)容,我們這次主要更新的依然是初階指針的基礎(chǔ)知識 廢話不多說咱們直接開始吧??! 概念: 野指針就是指針指向的位置是不可知的(隨機的、不正確的、沒有

    2024年02月16日
    瀏覽(22)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包