?? 例12.1.txt
字號:
例 12.1取一個整數a從右端開始的4~7位。
可以這樣考慮:
① 先使a右移4位。見圖12.3。圖12.3(a)是未右移時的情況,(b)圖是右移4位后的情況。目的是使要取出的那幾位移到最右端。
右移到右端可以用下面方法實現:
a >> 4
② 設置一個低4位全為1,其余全為0的數。可用下面方法實現:
~ ( ~ 0 << 4 )
~0的全部二進制為全1,左移4位,這樣右端低4位為0。見下面所示:
0:0000…000000
~0: 1111…111111
~0<<4:1111…110000
~(~0<<4):0000…001111
③ 將上面二者進行&運算。即
(a >> 4) & ~ ( ~ 0 << 4 )
根據上一節介紹的方法,與低4位為1的數進行&運算,就能將這4位保留下來。
程序如下:
main( )
{unsigned a,b,c,d;
scanf("%o",&a);
b=a>>4;
c=~(~0<<4);
d=b&c;
printf("%o, %d\n%o, %d\n",a,a,d,d);
}
運行情況如下:
331
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -