查看左移、右移的源代碼
←
左移、右移
跳轉(zhuǎn)至:
導(dǎo)航
、
搜索
因?yàn)橐韵略?,你沒有權(quán)限編輯本頁:
您剛才請求的操作只有這個(gè)用戶組中的用戶才能使用:
用戶
您可以查看并復(fù)制此頁面的源代碼:
左移運(yùn)算(<<),右移運(yùn)算(>>)<br> 描述<br> From The Bitmath Tutorial in The Playground <br> 在C++中有兩個(gè)移位運(yùn)算符:左移運(yùn)算符<<和右移運(yùn)算符>>。這些運(yùn)算符將使左邊操作數(shù)的每一位左移或右移其右邊指定的位數(shù)。<br> 語法<br> <pre style="color:blue"> variable << number_of_bits variable >> number_of_bits 參數(shù)<br> *variable - (byte, int, long) number_of_bits integer <= 32 <br> 示例:<br> <pre style="color:green"> int a = 5; // binary: 0000000000000101 int b = a << 3; // binary: 0000000000101000, or 40 in decimal int c = b >> 3; // binary: 0000000000000101, or back to 5 like we started with </pre> 當(dāng)把x左移y位(x << y),x中最左邊的y位將會(huì)丟失。 <pre style="color:green"> int a = 5; // binary: 0000000000000101 int b = a << 14; // binary: 0100000000000000 - 101中的第一個(gè)1被丟棄 </pre> 如果您確信沒有值被移出,理解左移位運(yùn)算符一個(gè)簡單的辦法是,把它的左操作數(shù)乘2將提高其冪值。例如,要生成2的乘方,可以使用以下表達(dá)式: <pre style="color:red"> 1 << 0 == 1 1 << 1 == 2 1 << 2 == 4 1 << 3 == 8 ... 1 << 8 == 256 1 << 9 == 512 1 << 10 == 1024 ... </pre> 當(dāng)把x右移y位,x的最高位為1,該行為依賴于x的確切的數(shù)據(jù)類型。如果x的類型是int,最高位為符號(hào)位,決定x是不是負(fù)數(shù),正如我們在上面已經(jīng)討論過的。在這種情況下,符號(hào)位會(huì)復(fù)制到較低的位: <pre style="color:green"> int x = -16; // binary: 1111111111110000 int y = x >> 3; // binary: 1111111111111110 </pre> 該行為,被稱為符號(hào)擴(kuò)展,常常不是你所期待的。反而,你可能希望移入左邊的是0。事實(shí)上右移規(guī)則對于無符合整型表達(dá)式是不同的。所以你可以使用強(qiáng)制類型轉(zhuǎn)換來避免左邊移入1。 <pre style="color:green"> int x = -16; // binary: 1111111111110000 int y = (unsigned int)x >> 3; // binary: 0001111111111110 </pre> 如果你可以很小心地避免符號(hào)擴(kuò)展,你可以使用右移位運(yùn)算符>>,作為除以2的冪的一種方法。例如 <pre style="color:green"> int x = 1000; int y = x >> 3; // 1000除以8,得y = 125. </pre>
返回
左移、右移
。
來自“
http://m.gharee.com/wiki/index.php/左移、右移
”
導(dǎo)航菜單
個(gè)人工具
登錄
名字空間
頁面
討論
變換
查看
閱讀
查看源代碼
查看歷史
操作
搜索
導(dǎo)航
首頁
社區(qū)專頁
新聞動(dòng)態(tài)
最近更改
隨機(jī)頁面
工具箱
鏈入頁面
相關(guān)更改
特殊頁面
頁面信息
隱私政策
關(guān)于ALSROBOT WiKi
免責(zé)聲明