免费观看又色又爽又黄的小说免费_美女福利视频国产片_亚洲欧美精品_美国一级大黄大色毛片

【C語言】移位操作符和位操作符-創新互聯

移位操作符和位操作符
    • 前言
    • 整數在內存中的存儲
    • 原碼·反碼·補碼
    • 移位操作符
      • 左移操作符
      • 右移操作符
    • 位操作符
      • 按位與(&)
      • 按位或( | )
      • 按位異或( ^ )

創新互聯是一家集網站建設,甕安企業網站建設,甕安品牌網站建設,網站定制,甕安網站建設報價,網絡營銷,網絡優化,甕安網站推廣為一體的創新建站企業,幫助傳統企業提升企業形象加強企業競爭力。可充分滿足這一群體相比中小企業更為豐富、高端、多元的互聯網需求。同時我們時刻保持專業、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學習、思考、沉淀、凈化自己,讓我們為更多的企業打造出實用型網站。前言

位操作符和移位操作符都是針對于二進制進行操作的

整數在內存中的存儲

整數在內存中儲存的是他的二進制補碼

整數(int)在內存空間中占四個字節
在這里插入圖片描述

原碼·反碼·補碼

正數原碼反碼補碼相同
負數反碼等于源碼處符號位其余為取反
補碼等于補碼+1

例如10的二進制序列為1010
補碼和原碼相同 即
00000000 00000000 00000000 00001010
例如-10的二進制序列為
10000000 00000000 00000000 00001010
反碼為
11111111 11111111 11111111 11110101
補碼為
11111111 11111111 11111111 11110110

移位操作符

移位操作符包括
左移操作符:<<
右移操作符:>>
注意移位操作符的對象必須是整數

左移操作符

左移操作符的規則是左邊丟棄,右邊補0

例如10左移兩位
先寫出10的二進制序列
00000000 00000000 00000000 00001010
補碼是
00000000 00000000 00000000 00001010
左移兩位右邊補0后
00000000 00000000 00000000 00101000
用十進制表示就是40

#includeint main()
{int b = 10<< 2;
	printf("%d",b);
	return 0;
}

在這里插入圖片描述

右移操作符

右移操作符分為兩種,算術右移和邏輯右移
算術右移是右邊丟棄,左邊補原來的符號位
邏輯右移是右邊丟棄,左邊補零

位操作符

C語言中位操作符有按位與 按位或 按位異或
他們的操作數是整數 ,對象是整數的二進制序列

按位與(&)

運算編碼:補碼
將整數從十進制轉化為二進制數,上下比較,有零則零 ,兩個都是 1 才是 1。

例如10&15
10的二進制序列為00000000 00000000 00000000 00001010
15的二進制序列為00000000 00000000 00000000 00001111
他們都是正數,原碼反碼補碼都相同,所以直接上下比較
得到 00000000 00000000 00000000 00001010 十進制為10

#includeint main()
{int a = 10, b = 15;
	printf("%d", (a & b));

	return 0;
}

在這里插入圖片描述

例如-10和-15
-10原碼10000000 00000000 00000000 00001010
反碼11111111 11111111 11111111 11110101
補碼11111111 11111111 11111111 11110110
-15原碼10000000 00000000 00000000 00001111
反碼 11111111 11111111 11111111 11110000
補碼 11111111 11111111 11111111 11110001
上下比較得到 11111111 11111111 11111111 11110000
轉化為原碼是 10000000 00000000 00000000 00010000
轉化為十進制數是-16

#includeint main()
{int a = -10, b = -15;
	printf("%d", (a & b));

	return 0;
}

在這里插入圖片描述

按位或( | )

運算編碼:補碼
將整數從十進制轉化為二進制數,上下比較,有1則1 ,兩個都是 0 才是 0。

例如10 | 15
10的二進制序列為00000000 00000000 00000000 00001010
15的二進制序列為00000000 00000000 00000000 00001111
他們都是正數,原碼反碼補碼都相同,所以直接上下比較
得到 00000000 00000000 00000000 00001111
十進制為15

#includeint main()
{int a = 10, b = 15;
	printf("%d", (a | b));

	return 0;
}

在這里插入圖片描述

例如-10和-15
-10原碼10000000 00000000 00000000 00001010
反碼11111111 11111111 11111111 11110101
補碼11111111 11111111 11111111 11110110
-15原碼10000000 00000000 00000000 00001111
反碼 11111111 11111111 11111111 11110000
補碼 11111111 11111111 11111111 11110001
上下比較得到 11111111 11111111 11111111 11110111
轉化為原碼是 10000000 00000000 00000000 00001001
轉化為十進制數是-9

#includeint main()
{int a = -10, b = -15;
	printf("%d", (a | b));

	return 0;
}

在這里插入圖片描述

按位異或( ^ )

運算編碼:補碼
將整數從十進制轉化為二進制數,上下比較,上下比較,相同為 0 ,相異為 1

例如0 ^ 15
10的二進制序列為00000000 00000000 00000000 00001010
15的二進制序列為00000000 00000000 00000000 00001111
他們都是正數,原碼反碼補碼都相同,所以直接上下比較
得到 00000000 00000000 00000000 00000101
十進制為5

#includeint main()
{int a = 10, b = 15;
	printf("%d", (a ^ b));

	return 0;
}

在這里插入圖片描述

例如-10和-15
-10原碼10000000 00000000 00000000 00001010
反碼11111111 11111111 11111111 11110101
補碼11111111 11111111 11111111 11110110
-15原碼10000000 00000000 00000000 00001111
反碼 11111111 11111111 11111111 11110000
補碼 11111111 11111111 11111111 11110001
上下比較得到 00000000 00000000 00000000 00000111
轉化為原碼是 00000000 00000000 00000000 00000111
轉化為十進制數是7

#includeint main()
{int a = -10, b = -15;
	printf("%d", (a ^ b));

	return 0;
}

在這里插入圖片描述

希望我的博客對你的學習有幫助
IDE VS2022

你是否還在尋找穩定的海外服務器提供商?創新互聯www.cdcxhl.cn海外機房具備T級流量清洗系統配攻擊溯源,準確流量調度確保服務器高可用性,企業級服務器適合批量采購,新人活動首月15元起,快前往官網查看詳情吧

名稱欄目:【C語言】移位操作符和位操作符-創新互聯
轉載來源:http://m.newbst.com/article18/dcggdp.html

成都網站建設公司_創新互聯,為您提供軟件開發關鍵詞優化網站設計公司電子商務定制開發網站建設

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

成都網站建設