一、邏輯與或非
基礎理論:
邏輯與或非,運算物件是布林值(1或0,真或假),類似於數位電路的與門,或門,非門。與關係運算子配合,一般用於選擇語句與迴圈語句中
1、邏輯與
符號為&&。 參與運算的兩個表示式都為真時,結果才為真,否則為假。
例如:uint8_t a = 3,b=5;
if((a3) && (b5))
;2、邏輯或
符號為||。 參與運算的兩個表示式只要有乙個為真,結果就為真;兩個表示式都為假時結果才為假。
例如:uint8_t a = 4,b=5;
if((a3) || (b5))
;3、邏輯非
符號為!。 參與運算的表示式為真時,結果為假;參與運算的表示式為假時,結果為真。
例如:bit flag = 0;
if(!flag)
;應用舉例:
直播現場程式設計。
二、按位與或反
按位與或反,運算物件是8位,16位或32位的整型資料,運算資料的每一位元位按邏輯與或非操作。
1、按位與
符號為&。參與運算的兩個資料按二進位制位進行邏輯與操作。
例如:uint8_t a = 0xaa,b=0x55,c;
c = a & b = 0x00;
特殊應用:
清零指定位元位
清零第0位: 運算資料 & 0xfe //1111 1110 ~(0x01 << 0)
清零第1位: 運算資料 & 0xfd //1111 1101 ~(0x01 << 1)
清零第2位: 運算資料 & 0xfb //1111 1011 ~(0x01 << 2)
清零第3位: 運算資料 & 0xf7 //1111 0111 ~(0x01 << 3)
清零第4位: 運算資料 & 0xef //1110 1111 ~(0x01 << 4)
清零第5位: 運算資料 & 0xdb //1101 1111 ~(0x01 << 5)
清零第6位: 運算資料 & 0xb7 //1011 1111 ~(0x01 << 6)
清零第7位: 運算資料 & 0x7f //0111 1111 ~(0x01 << 7)
2、按位或
符號為|。 參與運算的兩個資料按二進位制位進行邏輯或操作。
例如:uint8_t a = 0xaa,b=0x55,c;
c = a | b = 0xff;
特殊應用:
置位指定位元位
置位第0位: 運算資料 | 0x01 //0000 0001 (0x01 << 0)
置位第1位: 運算資料 | 0x02 //0000 0010 (0x01 << 1)
置位第2位: 運算資料 | 0x04 //0000 0100 (0x01 << 2)
置位第3位: 運算資料 | 0x08 //0000 1000 (0x01 << 3)
置位第4位: 運算資料 | 0x10 //0001 0000 (0x01 << 4)
置位第5位: 運算資料 | 0x20 //0010 0000 (0x01 << 5)
置位第6位: 運算資料 | 0x40 //0100 0000 (0x01 << 6)
置位第7位: 運算資料 | 0x80 //1000 0000 (0x01 << 7)
3、按位取反
符號為~。 參與運算的資料按二進位制位進行邏輯非操作。
例如:uint8_t a = 0xaa,b=0x55,c;
c = ~a = 0x55;
c = ~b = 0xaa;
應用舉例:
直播現場程式設計。
三、按位異或
基礎理論:
符號為^,參與運算的兩個資料按二進位制位進行「異或」運算。
運算規則:00=0;01=1;10=1;11=0;
例如:uint8_t a = 0xaa,b=0x55,c;
c = a^b = 0xff;
uint8_t a = 0xff,b=0xff,c;
c = a^b = 0x00;
特殊應用:
取反指定位元位
取反第0位: 運算資料 ^ 0x01 //0000 0001 (0x01 << 0)
取反第1位: 運算資料 ^ 0x02 //0000 0010 (0x01 << 1)
取反第2位: 運算資料 ^ 0x04 //0000 0100 (0x01 << 2)
取反第3位: 運算資料 ^ 0x08 //0000 1000 (0x01 << 3)
取反第4位: 運算資料 ^ 0x10 //0001 0000 (0x01 << 4)
取反第5位: 運算資料 ^ 0x20 //0010 0000 (0x01 << 5)
取反第6位: 運算資料 ^ 0x40 //0100 0000 (0x01 << 6)
取反第7位: 運算資料 ^ 0x80 //1000 0000 (0x01 << 7)
應用舉例:
直播現場程式設計。
四、左移與右移
基礎理論:
符號為《與》,運算物件是8位,16位或32位的整型資料, 把資料向左或向右移動若干位。向左移動時,高位溢位,低位補0;向右移動時,低位溢位,高位補0,。
例如:uint8_t a = 0xcb,c;
c = a << 5 = 0x40;
c = a >> 3 = 0x19;
應用舉例:
直播現場程式設計。
微控制器入門基礎
1什麼時鐘?首先我們先講講什麼是時鐘。時鐘就是微控制器的心臟。每跳動一下。整個微控制器的各個電路就同步的動作一下。就好像我們做廣播體操的時候 廣播上喊的節拍1234 2234 3234。然後我們全部的同學就按照這個節奏進行乙個個動作。節拍越快我們動作越快。節拍越慢我們動作的越慢。內部時鐘和外部時鐘?...
如何入門微控制器C語言
一 為什麼要學微控制器技術?傳統的電子產品公升級改造成智慧型化的電子產品需要用到微控制器技術。也就是說傳統的電子產品如電視機 電子錶 計算器 數位相機 手機 遙控器 洗衣機等產品智慧型化 微型化,需要的核心技術就是微控制器技術。所以從事電子行業的工作人員必須學好微控制器技術,否則必然被社會淘汰。二 ...
菜鳥之學習51微控制器(二)微控制器C語言基礎
大一的時候學習了譚浩強教授的 c語言程式設計 有了一定的基礎,再加上大二參加c語言2級培訓班,通過了全國二級,有一定的提高,但是翻看 微控制器程式設計 之後發現,keil 3除了標準c語言的關鍵字外,增加如下關鍵字 1.at 絕對位址定位 2.alien 函式型別 3.bdata 用於指定儲存於ra...