freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

c語言程序設(shè)計(jì)教程(四)ppt-資料下載頁

2025-10-08 04:11本頁面
  

【正文】 bit amp。 ~( 0XF) 的結(jié)果值是將變量 bit的值的低四位清零之后的值。注意,這個(gè)運(yùn)算不能被簡(jiǎn)單地寫為: ? bit amp。 0XFFF0 ? 這個(gè)表達(dá)式在十六位操作系統(tǒng)上可以正確工作,但在三十二位操作系統(tǒng)上就不能正確工作。 ? 下面語句判別變量 bit的值的第 0位或第二位是否為 1: ? if (bit amp。 0X5) 按位或運(yùn)算符¦ ? 按位或運(yùn)算的基本用途是設(shè)置某個(gè)位或某些位。下面的例子說明了這個(gè)運(yùn)算符的運(yùn)算規(guī)則: ? 0000 1001 1011 1001 ? ¦ 0000 0000 1000 0011 ? 0000 1001 1011 1011 ? 下面的表達(dá)式的結(jié)果值是將變量 bit的第 0位和第二位置 1之后的值: ? bit ¦ 0X5 按位異或運(yùn)算符^ ? 按位異或運(yùn)算將兩個(gè)操作數(shù)中那些相異的位置 1。下面的例子說明了這個(gè)運(yùn)算符的運(yùn)算規(guī)則: ? 0000 1001 1011 1001 ? ^ 0000 0000 1000 0011 ? 0000 1001 0011 1010 ? 由于在將一個(gè)位與 0進(jìn)行異或操作時(shí),結(jié)果值中對(duì)應(yīng)于該位的值保持不變,而與 1進(jìn)行異或運(yùn)算時(shí),結(jié)果值中對(duì)應(yīng)于該位的值被翻轉(zhuǎn) (0變?yōu)?1, 1變?yōu)?0),所以,下面表達(dá)式的結(jié)果值是將變量 bit的低四位翻轉(zhuǎn)之后的值: ? bit^ 0X0F 左移運(yùn)算符 ? 它是二元運(yùn)算符,其一般形式為: ? 操作數(shù) 1操作數(shù) 2 ? 這個(gè)表達(dá)式的運(yùn)算結(jié)果為將 “ 操作數(shù) 1”的值的位序列左移 “ 操作數(shù) 2”的值所表示的次數(shù)之后的值。在左移過程中,右邊空出的位補(bǔ) 0,左邊移出的位被舍棄。例如,設(shè)變量 bit的值的位序列為: ? 1101 0001 0101 1111 ? 則表達(dá)式: ? bit 4 ? 的值為: ? 0001 0101 1111 0000 ? 下面的表達(dá)式的結(jié)果值為將變量 bit的值的第 n位置 1之后的值: ? bit¦ 1 n ? 下面的表達(dá)式的結(jié)果值為將變量 bit的值的第 n位清 0之后的值: ? bit amp。 ~(1 n) 右移運(yùn)算符 ? 它是二元運(yùn)算符,其一般形式為: ? 操作數(shù) 1 操作數(shù) 2 ? 這個(gè)表達(dá)式的運(yùn)算結(jié)果為將 “ 操作數(shù) 1”的值的位序列右移 “ 操作數(shù) 2”的值所表示的次數(shù)之后的值。右邊移出的位被舍棄。對(duì)于無符號(hào)數(shù),左邊空出的位補(bǔ) 0;對(duì)于有符號(hào)數(shù),左邊空出的位按符號(hào)位復(fù)制,也就是說,如果符號(hào)位為 1(負(fù)數(shù) ),空出的位補(bǔ) 1,如果符號(hào)位為 0,空出的位補(bǔ) 0。例如,設(shè)變量 bit的值的位序列為: ? 1101 0001 0101 1111 ? 對(duì)于表達(dá)式: ? bit 4 ? 如果變量 bit的值是無符號(hào)的,則結(jié)果值為: ? 0000 1101 0001 0101 ? 如果變量 bit的值是有符號(hào)的,則結(jié)果值為: ? 1111 1101 0001 0101 ? 這就是說,在右移過程中,值被改變了,但符號(hào)位保持不變。 位運(yùn)算與賦值運(yùn)算的結(jié)合 ? 位運(yùn)算符與賦值運(yùn)算符可以組成復(fù)合賦值運(yùn)算符,如下: ? amp。= ¦ = = = ^ = ? 設(shè) bit是變量, op代表符號(hào)"="左邊的運(yùn)算符,則表達(dá)式: ? bit op=表達(dá)式 ? 等價(jià)為: ? bit=bit op(表達(dá)式 ) ? 例如,設(shè)變量 bit的值的位序列為: ? 1101 0001 0101 1111 ? 變量 y的值的位序列為: ? 1100 0000 0101 1000 ? 則下面的語句: ? bit amp。= y。 ? 將變量 bit的值的位序列修改為: ? 1100 0000 0101 1000 位運(yùn)算符的優(yōu)先次序 ? 6個(gè)位運(yùn)算符從高到低的運(yùn)算次序如下: ? ~ 高 ? (同級(jí)) ? amp。 ? ^ ? ¦ 低 ? 除取反運(yùn)算符 ~外,其它運(yùn)算符的結(jié)合方向都是從左到右。 示例程序 ? 例 111 對(duì)整數(shù) a取其從右端開始的 4~ 7位。 ? 分析: ? ① 先使 a右移 4位,用下面的式子實(shí)現(xiàn): ? a4 ? ② 設(shè)置一個(gè)低 4位全為 1,其余全為 0的數(shù)。用下面的式子實(shí)現(xiàn): ? ~( ~ 04) ? (~ 0)的全部二進(jìn)制位為 1,左移 4位,這樣右端低 4位為 0。 ? ③ 將上面①、②進(jìn)行 amp。運(yùn)算。即: ? ( a4) amp。 ~( ~ 04) ? 程序如下: ? include 示例程序 (續(xù) ) ? void main() ? { ? unsigned a,b,c,d。 ? scanf(%o,amp。a)。 ? b=a4。 ? c=~(~04 )。 ? d=bamp。c。 ? printf(%o,%d\n%o,%d\n,a,a,d,d)。 ? } ? 運(yùn)行結(jié)果如下: ? 331↙ ? 331, 217 ? 15, 13 ? 輸入 a的值為八進(jìn)制數(shù) 331,即十進(jìn)制數(shù) 217,其二進(jìn)制形式為 11011001,經(jīng)運(yùn)算最后得到的 d為 00001101,即八進(jìn)制數(shù) 15,十進(jìn)制數(shù) 13。 示例程序 (續(xù) ) ? 例 112 循環(huán)移位。要求將 a進(jìn)行右循環(huán)移位,即將 a中原來左端( 16- n)位右移 n位,原來右端 n位移到最左面 n位。假設(shè)用 16位存放一個(gè)整數(shù)。 ? 為實(shí)現(xiàn)以上目的可用如下步驟: ? ① 將 a的右端 n位先放到 b的高 n位,可用下面的語句實(shí)現(xiàn): ? b=a ( 16 n) 。 ? ② 將 a右移 n位,其左端高 n位補(bǔ) 0,可用下面的語句實(shí)現(xiàn): ? c = a n 。 ? ③ 將 c與 b進(jìn)行按位或運(yùn)算,即: ? c = c¦ b 。 ? 程序如下: ? include 示例程序 (續(xù) ) ? void main() ? { ? unsigned a,b,c。 ? int n。 ? scanf(a=%o,n=%d,amp。a,amp。n)。 ? b=a(16n)。 ? c=an。 ? c=c|b。 ? printf(%o\n%o,a,c)。 ? } ? 運(yùn)行結(jié)果如下: ? 157653 3↙ ? 157653 ? 75765 ? 運(yùn)行開始時(shí)輸入八進(jìn)制數(shù) 157653,即二進(jìn)制數(shù) 1101111110101011,循環(huán)右移 3位后得二進(jìn)制數(shù) 0111101111110101,即八進(jìn)制數(shù) 75765。 ? 同樣可以左循環(huán)移位。 位段 ? C語言允許在一個(gè)結(jié)構(gòu)體中以位為單位來指定其成員所占內(nèi)存長(zhǎng)度,這種以位為單位的成員稱為 “ 位段 ” 或稱 “ 位域 ” 。利用位段能夠用較少的位數(shù)存儲(chǔ)數(shù)據(jù)。位段結(jié)構(gòu)類型的一般形式為: ? struct 位段結(jié)構(gòu)類型名 ? { ? 成員表 ? } 。 ? 例如: ? struct packed_d ? { ? unsigned a:2。 ? unsigned b:1。 ? unsigned c:3。 ? unsigned d:2。 ? unsigned e:5。 ? }。 位段 (續(xù) ) ? 定義了一個(gè)位段結(jié)構(gòu)類型 packed_d,包含 5個(gè)位段成員,其中 a占 2位, b占 1位, c占 3位, d占 2位, e占 5位。至于這些位段在存儲(chǔ)單元中的具體存放位置,是由編譯系統(tǒng)來分配的,一般用戶不必考慮。在微機(jī)系統(tǒng)中,各位段在存儲(chǔ)單元中一般是從右到左順序分配的。例如,上述定義的位段結(jié)構(gòu)類型需要占 2bit(16位 ),其存儲(chǔ)結(jié)構(gòu)為: 15 13 12 8 7 6 5 3 2 1 0 空 5 2 3 1 2 位段 (續(xù) ) ? 定義了位段結(jié)構(gòu)類型后,就可以聲明位段結(jié)構(gòu)類型的變量。 ? 例如: ? struct packed_d x,y。/* x, y是 packed_d類型的變量 */ ? 與聲明結(jié)構(gòu)體類型變量一樣,不僅可以將位段結(jié)構(gòu)類型定義與該類型的變量聲明分開,也可以在定義位段結(jié)構(gòu)類型的同時(shí)聲明該 類型的變量。 ? 例如: ? struct packed_d ? { ? unsigned a:2。 ? unsigned b:1。 ? unsigned c:3。 ? unsigned d:2。 ? unsigned e:5。 ? }p1,p2。 位段 (續(xù) ) ? 還可以直接聲明位段結(jié)構(gòu)類型的變量。 ? 例如: ? struct ? { ? unsigned a:2。 ? unsigned b:1。 ? unsigned c:3。 ? unsigned d:2。 ? unsigned e:5。 ? }p3。 ? 對(duì)位段結(jié)構(gòu)成員的引用方式,與引用一般結(jié)構(gòu)體成員的方式相同。 ? 例如: ? =3; 位段 (續(xù) ) ? 表示將 3賦給位段結(jié)構(gòu)類型變量 p3的位段(成員) d,但必須注意,在對(duì)位段進(jìn)行賦值時(shí),要考慮到該位段所占用的二進(jìn)制位數(shù),如果所賦的數(shù)值超過了位段的表示范圍,則自動(dòng)取其低位數(shù)字。 ? 例如: ? =5; ? 由于 d位段只占 2個(gè)二進(jìn)制位,因此,實(shí)際賦給 d位段的是 5的二進(jìn)制表示( 101)的低 2位,也就是 1。 ? 在聲明位段和引用位段時(shí),要注意以下幾個(gè)問題: ? ( 1)位段成員的的類型必須是 unsigned或 int類型。 ? ( 2)在位段結(jié)構(gòu)類型中,可以聲明無名位段,這種無名位段具有位段之間的分隔作用。例如: ? struct packed_data ? { ? unsigned f1:2。 ? unsigned f2:1。 ? unsigned :2。 ? unsigned f3:3。 ? }。 位段 (續(xù) ) ? 其中第 3個(gè)位段是無名位段,占 2位,在位段 f2和 f3之間起分隔作用。無名位段所占用的空間不起作用。 ? 如果無名位段的長(zhǎng)度為 0,則表示下一個(gè)位段從一個(gè)新的字節(jié)開始存放。 ? 例如: ? struct packed_data ? { ? unsigned f1:2。 ? unsigned f2:1。 ? unsigned :0。 ? unsigned f3:3。 ? }。 ? 該位段結(jié)構(gòu)要占 2bit。 位段 (續(xù) ) ? ( 3)每個(gè)位段的長(zhǎng)度不能大于存儲(chǔ)單元的長(zhǎng)度。 ? ( 4)位段不能聲明為數(shù)組,也不能用指針指向位段。 ? ( 5)位段結(jié)構(gòu)類型可以包含非位段成員。 ? 例如: ? struct packed_d1 ? { ? int n。 ? unsigned f1:2。 ? unsigned f2:1。 ? unsigned f3:3。 ? }。 位段 (續(xù) ) ? 其中 n為非位段成員,它單獨(dú)占 2bit。非位段成員也可以在兩個(gè)位段成員之間。 ? 例如: ? struct packed_d1 ? { ? unsigned f1:2。 ? int n 。 ? unsigned f2:1。 ? unsigned f3:3。 ? }。 位段 (續(xù) ) ? 不管非位段成員在兩個(gè)位段之間,還是在兩個(gè)位段之前或之后,它總是從下一個(gè)字節(jié)開始存放,當(dāng)前字節(jié)剩下的位空間不再使用。 ? 非位段成員的引用方式與普通結(jié)構(gòu)體成員的引用方式完全相同。 ? ( 6)位段成員可以在數(shù)值表達(dá)式中被引用,它會(huì)被自動(dòng)轉(zhuǎn)換為相應(yīng)的整數(shù)。 ? 例如: ? +。 ? 是合法的。 習(xí)題 1. 在 C語言中,有哪些位運(yùn)算符,其中有哪些是二元運(yùn)算符? 2. 若 x=3, y=2, z=1,下列各式的結(jié)果是 。 A. x¦ y amp。 z B. x¦ yz C. x^ y amp。 z D. x amp。 y amp。amp。 z 3. 若 x=1, y=1,下列各式的結(jié)果是 。 A. ! x¦ x B. ~x¦ x C. x^ x D. x =2 E. y2
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1