色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

C語言基礎(7)--位運算

嵌入式技術 ? 來源:嵌入式技術 ? 作者:嵌入式技術 ? 2023-06-29 11:25 ? 次閱讀

程序中的所有數在計算機內存中都是以二進制的形式儲存的。位運算就是直接對整數在內存中的二進制位進行操作。C語言中位運算符: &(按位與)、| (按位或)、~(按位取反)、 <<(左移)、>>(右移) 、^(異或運算)。

計算機所能識別的即為二進制數,位運算就是按位運算, 因而同等情況下位運算效率一般都高于其它方式。

1.位運算特性

unsigned char a=0x45,b=0x89; a=0x45(0100 0101) b=0x89(1000 1001)

位運算

規則

示例

&(按位與)

全1為1,有0則0 a&b=0x1(0000 0001b)
|(按位或) 有1為1,全0則0 a|b=0xcd(1100 1101b)

~(按位取反)

對每一位進行取反,1變0,0變1

~a=0xba(1011 1010)

~b=0x76(0111 0110)

<<(左移)

高位溢出,低位補0

(a<<1)=0x8a(1000 1010)

(b<<1)=0x12(0001 0010)

>>(有移)

低位溢出,高位補0

(a>>1)=0x22(0010 0010)

(b>>1)=0x44(0100 0100)

^(異或運算)

相同為0,不同為1

a^b=0xcc(1100 1100)

  • 優先級關系:

~(取反)

<<(左移) ? >>(右移)

&按位與

^(按位異或)

|(按位或)

2.示例

#include 
int main()
{
	unsigned char a=0x45,b=0x89;
	printf("與運算a&b:%#xn",a&b);
	printf("或運算a|b:%#xn",a|b);
	printf("取反運算~a:%#xt ~b:%#xn",~a&0xff,~b&0xff);
	printf("左移a>1:%#xt b>>1:%#xn",a>>1,b>>1);
	printf("異或a^b:%#xn",a^b);
}

[wbyq@wbyq 123]$ gcc main.c 
[wbyq@wbyq 123]$ ./a.out 
與運算a&b:0x1
或運算a|b:0xcd
取反運算~a:0xba	 ~b:0x76
左移a>1:0x22	 b>>1:0x44
異或a^b:0xcc

3.位運算練習

1.定義兩個變量unsigned char a=0x45,b=0x89;將a的第6位清0,將b的第4位置1;

2.定義兩個整型變量a,b將a,b的值交換位置(不借助第三個變量,使用位運算);

3.定義一個整型變量data,將字符'a'、'b'、'c'、'd' 保存到data中,并輸出字符abcd;

4.漢字點陣輸出

漢字顯示我們每時每刻都在使用,那漢字是如何顯示在屏幕上的呢?通過位運算的學習我們即可通過printf模擬函數輸出顯示。

例如我們需要在一個8*8的點陣方格中顯示一個”中”字??梢钥醋鋈缦拢?/p> poYBAGSc9iqARdIqAABxOpq1SOk594.png

一個有8個格子,剛好一個字節有8位,一個方格中有兩個狀態:空白和顯紅。我們可以把空白的地方看做0,把顯示紅色的地方看做1,這樣整個8*8個格我們就可以用8個字節表示,坐標為高位,右邊為低位,高位在前方式。表示如下:

第一行:0x08;

第二行:0x08;

第三行:0x3e;

第四行:0x2a;

第五行:0x2a;

第六行:0x3e;

第七行:0x08;

第八行:0x08;

通過位運算實現如下:

#include 
const unsigned char buff[]={0x08,0x08,0x3E,0x2A,0x2a,0x3e,0x08,0x08};
int main()
{
	int i,j;
	unsigned char temp;
	for(i=0;i
pYYBAGSc9pSALOMzAABvXDkjCjY385.png

5.漢字顯示練習

1.通過PCtoLCD2002工具實現漢字取模進行取模,封裝漢字顯示函數,以橫向和縱向兩種方式顯示。

pYYBAGSc-WGAYx-MAATMgmmPFhc021.png
#include 
#define FONT_SIZE 24
const char buf[][24*24/8]=
{
	{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x00,0x70,0x00,0x00,0x70,0x00,0x00,0x30,0x00,0x00,0x31,0xC0,0x00,0x7F,0xE0,0x0F,0xF0,0xE0,0x0E,0x30,0xE0,0x06,0x3F,0xC0,0x07,0xF9,0xC0,0x06,0x31,0x80,0x06,0x31,0x80,0x06,0xFF,0x00,0x03,0xF0,0x00,0x00,0x70,0x00,0x00,0x30,0x18,0x00,0x30,0x0C,0x00,0x38,0x1C,0x00,0x1F,0xFC,0x00,0x03,0xC0,0x00,0x00,0x00,0x00,0x00,0x00},/*"電",0*/

	{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x80,0x00,0x7D,0xC0,0x01,0xE3,0xC0,0x00,0x07,0x00,0x00,0x06,0x00,0x00,0x3C,0x00,0x00,0x1C,0x1C,0x00,0x0F,0xFE,0x0F,0xFC,0x00,0x3C,0x0E,0x00,0x00,0x0E,0x00,0x00,0x0E,0x00,0x00,0x0E,0x00,0x00,0x0E,0x00,0x00,0x0E,0x00,0x00,0x0E,0x00,0x00,0x0E,0x00,0x00,0xFC,0x00,0x00,0x3C,0x00,0x00,0x18,0x00,0x00,0x00,0x00},/*"子",1*/

	{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x00,0x1C,0x00,0x00,0x1C,0xF0,0x01,0x9C,0x30,0x01,0xD8,0x00,0x01,0x99,0xE0,0x03,0xBF,0x80,0x03,0xF0,0x00,0x03,0x30,0x00,0x00,0x73,0x80,0x00,0x7F,0xC0,0x00,0xF3,0x80,0x00,0xFB,0x80,0x01,0xDF,0x00,0x01,0x8F,0x00,0x03,0x07,0x00,0x07,0x0F,0x80,0x0E,0x39,0xE0,0x18,0x60,0xF8,0x00,0x00,0x7E,0x00,0x00,0x00,0x00,0x00,0x00},/*"發",2*/

	{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1C,0x00,0x03,0x9C,0x00,0x03,0x0D,0xC0,0x03,0x0F,0x00,0x03,0x1E,0x60,0x03,0xF7,0xE0,0x33,0xE3,0xC0,0x1B,0x83,0xCC,0x1F,0x06,0xFC,0x03,0x1C,0x1C,0x03,0x00,0xE0,0x03,0x1F,0xC0,0x07,0x8D,0x80,0x07,0xCD,0x80,0x06,0xDD,0x80,0x0E,0x19,0x86,0x0C,0x31,0x86,0x18,0x71,0xCE,0x30,0xC0,0xFC,0x00,0x00,0x00,0x00,0x00,0x00},/*"燒",3*/

	{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x00,0x1C,0x00,0x00,0x18,0x00,0x00,0x38,0x00,0x00,0x3B,0xF0,0x03,0xFF,0x00,0x07,0xB0,0x00,0x00,0x70,0x00,0x00,0x60,0x00,0x00,0x6F,0xC0,0x00,0xFB,0x80,0x00,0xC3,0x80,0x01,0xF3,0x80,0x03,0xBB,0x00,0x03,0x0F,0x00,0x06,0x07,0x00,0x0C,0x0F,0x80,0x18,0x1D,0xC0,0x70,0x38,0xF0,0x01,0xE0,0x7F,0x00,0x00,0x00,0x00,0x00,0x00},/*"友",4*/
};


int main()
{
	int i,j,k,x;
	unsigned char temp;
	for(i=0;i
pYYBAGSc-YqAaDenAAC3S0Cnd58292.png
審核編輯:湯梓紅
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 計算機
    +關注

    關注

    19

    文章

    7488

    瀏覽量

    87848
  • 內存
    +關注

    關注

    8

    文章

    3019

    瀏覽量

    74002
  • C語言
    +關注

    關注

    180

    文章

    7604

    瀏覽量

    136683
  • 位運算
    +關注

    關注

    0

    文章

    17

    瀏覽量

    8422
收藏 人收藏

    評論

    相關推薦

    C語言基礎知識(4)--運算

    C語言中,運算符包括有算術運算符、關系運算符、邏輯運算符和
    的頭像 發表于 06-15 09:38 ?3625次閱讀

    C語言運算符的使用方法

    詳細介紹了C語言表達式、算術運算符、賦值運算符、關系運算符、條件結構、邏輯運算符、
    發表于 11-02 11:30 ?1602次閱讀
    <b class='flag-5'>C</b><b class='flag-5'>語言</b><b class='flag-5'>運算</b>符的使用方法

    【跟我學單片機C語言】詳解運算符和表達式的運算

    【跟我學單片機C語言】詳解運算符和表達式的運算符學過匯編的朋友都知道匯編對位的處理能力是很強的,但是單片機
    發表于 12-07 13:51

    C語言程序中運算的操作

    在標準C語言的的教材中,對于運算的操作是基本不涉及的,但是在單片機系統的程序中,需要經常操作各類以字節為單位的寄存器,而這些寄存器通常都是以二進制中的
    發表于 07-14 07:45

    嵌入式C語言運算的相關資料推薦

    提示:文章寫完后,目錄可以自動生成,如何生成可參考右邊的幫助文檔@[TOC]嵌入式C語言運算一、pandas是什么?1.與運算“&” 按
    發表于 12-15 07:22

    C語言運算與stm32調試原理介紹

    C語言運算:“|=”或運算,相應位置1“&=”與運算,相應
    發表于 02-23 06:52

    單片機c語言教程第八章--運算符和表達式(運算符)

    學過匯編的朋友都知道匯編對位的處理能力是很強的,但是單片機C語言也能對運算對象進行按操作,從而使單片機C
    發表于 04-15 09:38 ?1456次閱讀

    C/C++語言運算詳解

    運算是指按二進制進行的運算。在系統軟件中,常常需要處理二進制的問題。C語言提供了6個
    發表于 12-14 16:36 ?4596次閱讀

    C語言教程之平方和運算的問題

    C語言教程之平方和運算的問題,很好的C語言資料,快來學習吧。
    發表于 04-25 15:03 ?0次下載

    C語言運算+實例講解

    C語言運算有6種: &, | , ^(亦或), (右移)。 注意:參與運算的元素必須是in
    的頭像 發表于 03-22 16:00 ?8603次閱讀
    <b class='flag-5'>C</b><b class='flag-5'>語言</b><b class='flag-5'>位</b><b class='flag-5'>運算</b>+實例講解

    C語言總結_語句、運算

    當前文章復盤C語言的: 運算運算符、基本運算符、數據類型、變量、for語句、while語句、g
    的頭像 發表于 08-14 09:39 ?999次閱讀

    C語言_語句與運算基本練習

    總結C語言語句的幾個基本練習題,計算素數、排序、求偶數和、可逆素數、水仙花數、交換大小寫、交換變量的值、運算、語法特性等知識點。
    的頭像 發表于 08-14 09:46 ?1000次閱讀

    C語言-基本數據類型與運算

    這篇文章作為基礎知識點,總結C語言的基本數據類型有哪些,浮點數的精度,整數變量的空間范圍,變量定義語法,變量命名規則,浮點數打印格式,基本數據類型printf對應的打印、運算的知識點
    的頭像 發表于 08-14 09:56 ?1581次閱讀

    C語言中必須要掌握的運算操作

    C語言中,特別是在嵌入式的開發中,操作是很常用的一個知識點,涉及到按(bit)操作的地方也是很常見的。本文分享一些C
    的頭像 發表于 02-10 14:19 ?1455次閱讀
    <b class='flag-5'>C</b><b class='flag-5'>語言</b>中必須要掌握的<b class='flag-5'>位</b><b class='flag-5'>運算</b>操作

    C語言運算

    C語言中,我們常常會用到表達式,在使用表達式的過程中便會使用到運算符。C語言中,不同的運算符擁
    的頭像 發表于 02-21 15:12 ?1186次閱讀
    <b class='flag-5'>C</b><b class='flag-5'>語言</b>的<b class='flag-5'>運算</b>符
    主站蜘蛛池模板: 国产一区91| 97国产视频| 窝窝午夜色视频国产精品东北| 年轻的女教师2017韩国在线看| 久久re6热在线视频精品| 和I儿媳妇激情| 国产亚洲精品久久无码98| 国产九色在线| 国产精品视频yy9099| 国产精品免费大片一区二区| 国产AV精品久久久免费看| 高H黄暴NP辣H一女多男| www在线小视频免费| 99精品免费久久久久久久久日本 | 娇妻归来在线观看免费完整版电影| 国产AV精品白浆一区二| 国产国产人免费观看在线视频| 福利片午夜| 国产精品九九久久| 国产真实强被迫伦姧女在线观看| 国产亚洲AV无码成人网站| 国内精品蜜汁乔依琳视频| 精品国产乱码久久久人妻| 精品久久久久久无码人妻国产馆| 精品含羞草免费视频观看 | 超级最爽的乱淫片免费| 超碰人热人人热人人看| 高清国产激情视频在线观看| 国产精品久久免费视频| 好男人好资源在线播放| 久久99re2热在线播放7| 久色视频网| 全黄h全肉短篇禁乱np| 色狼亚洲色图| 亚洲精品AV一二三区无码| 一二三四在线观看高清电视剧| 中文字幕精品在线视频| 99免费在线| 国产电影午夜成年免费视频| 国产三级91| 久久人妻少妇嫩草AV无码|