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

正文內(nèi)容

c程序設(shè)計位運算ppt課件(編輯修改稿)

2024-11-15 04:38 本頁面
 

【文章內(nèi)容簡介】 ? a=a<< 2 ? 將 a的二進制數(shù)左移 2位,右補 0。若 a=15,即二進制數(shù) 00001111,左移 2位得 00111100,即十進制數(shù)60(為簡單起見,我們用 8位二進制數(shù)表示十進制數(shù) 15,如果用 16位,結(jié)果是一樣的 )。 ? 高位左移后溢出,舍棄不起作用。 ? 左移 1位相當(dāng)于該數(shù)乘以 2,左移 2位相當(dāng)于該數(shù)乘以 22=4。上面舉的例子 15<< 2=60,即乘了 4。但此結(jié)論只適用于該數(shù)左移時被溢出舍棄的高位中 不包含 1的情況。例如,假設(shè)以一個字節(jié) (8位 )存一個整數(shù),若 a為無符號整型變量,則 a=64時,左移一位時溢出的是 0,而左移 2位時,溢出的高位中包含 1。左移比乘法運算快得多 ,有些 C編譯程序自動將乘 2的運算用左移一位來實現(xiàn) ,將乘 2n的冪運算處理為左移 n位。 右移運算符 () ? a2表示將 a的各二進位右移 2位。移到右端的低位被舍棄 ,對無符號數(shù) ,高位補 0。如 a=017時 : ? 11a為 00001111, a2為 00000011|11 此二位舍棄 ? 右移一位相當(dāng)于除以 2,右移 n位相當(dāng)于除以 2n。在右移時 ,需要注意符號位問題。對無符號數(shù) ,右移時左邊高位移入 0。對于有符號的值 ,如果原來符號位為 0(該數(shù)為正 ),則左邊也是移入 0,如同上例表示的那樣。如果符號位原來為 1(即負數(shù) ),則左邊移入0還是 1,要取決于所用的計算機系統(tǒng)。有的系統(tǒng)移入 0,有的移入 1。移入 0的稱為“邏輯右移” ,即簡單右移。移入 1的稱為“算術(shù)右移”。例如 ,a的值為八進制數(shù) 113755。 ? a:1001011111101101 ? a1: 0100101111110110(邏輯右移時 ) ? a1: 1100101111110110(算術(shù)右移時 ) ? 在有些系統(tǒng)上 ,a1得八進制數(shù) 045766,而在另一些系統(tǒng)上可能得到的是 145766。 Turbo C和其他一些C編譯采用的是算術(shù)位移 ,即對有符號數(shù)右移時 ,如果符號位原來為 1,左面移入高位的是 1。 位運算賦值運算符 ? 位運算符與賦值運算符可以組成復(fù)合賦值運算符如 :amp。=, |=, =, =, ∧ = ? 例如 ,a amp。 = b相當(dāng)于 a = a amp。 b。 a =2相當(dāng)于 :a = a 2。 不同長度的數(shù)據(jù)進行位運算 ? 如果兩個數(shù)據(jù)長度不同 (例如 long型和 int型 )進行位運算時 (如 a amp。 b,而 a為 long型 ,b為 int型 ),系統(tǒng)會將二者按右端對齊。如果 b為正數(shù) ,則左側(cè) 16位補滿 0。若 b為負數(shù) ,左端應(yīng)補滿 1。如果 b為無符號整數(shù)型 ,則左側(cè)添滿 0。 位運算舉例 ? 例 a從右端開始的 4~ 7位。 ? 可以這樣考慮 : ? ① 先使 a右移 4位。見圖 。圖 (a)是未右移時的情況 ,(b)圖是右移 4位后的情況。目的是使要 取出的那幾位移到最右端。 圖 ? 右移到右端可以用下面方法實現(xiàn) : ? a 4 ? ② 設(shè)置一個低 4位全為 1,其余全為 0的數(shù)??捎孟旅娣椒▽崿F(xiàn) : ? ~ ( ~ 0 4 ) ? ~ 0的全部二進制為全 1,左移 4位,這樣右端低 4位為 0。見下面所示: ? 0:0000…000000 ? ~0: 1111…111111 ? ~04:1111…110000 ? ~(~04):0000…001111 ? ③ 將上面二者進行 amp。運算。即 ? (a 4) amp。 ~ ( ~ 0 4 ) ? 根據(jù)上一節(jié)介紹的方法,與低 4位為 1的數(shù)進行 amp。運算,就能將這 4位保留下來。 ? 程序如下: main( ) {unsigned a, b, c, d; scanf(%o, amp。a); b=a>> 4; c=~ (~ 0<< 4); d=bamp。c; printf(%o, %d\n%o, %d\n, a, a, d,d); } 運行情況如下: 331 331, 217(a的值 ) 15, 13 (d的值 ) ? 輸入 a的值為八進制數(shù) 331, 即十進制數(shù) 217, 其二進制形式為 11011001。經(jīng)運算最后得到的 d為00001101,即八進制數(shù) 15,十進制數(shù) 13。 ? 圖 ? 可以任意指定從右面第 m位開始取其右面 n位。只需將程序中的“ b=a>> 4”改成“ b=a>> (mn+1)”以及將“ c=~ (~ 0<<
點擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1