C語言總并沒有左移函數(shù)和右移函數(shù)。左移和右移是位運算符,僅僅適用于整數(shù)型的數(shù)據(jù)。
創(chuàng)新互聯(lián)主營單縣網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,APP應(yīng)用開發(fā),單縣h5成都微信小程序搭建,單縣網(wǎng)站營銷推廣歡迎單縣等地區(qū)企業(yè)咨詢
假設(shè)0010
左移就是把二進制數(shù)向左移動,右邊補0,0的二進制全是0,左移之后右邊再補0。
00102 就是1000 實際是做的*4。
10002 計算 0010 實際做的是/4。
位移位運算符是將數(shù)據(jù)看成二進制數(shù),對其進行向左或向右移動若干位的運算。位移位運算符分為左移和右移兩種,均為雙目運算符。第一運算對象是移位對象,第二個運算對象是所移的二進制位數(shù)。
位移位運算符的運算對象、運算規(guī)則與結(jié)果、結(jié)合性如表2-16所示。
移位時,移出的位數(shù)全部丟棄,移出的空位補入的數(shù)與左移還是右移花接木有關(guān)。如果是左移,則規(guī)定補入的數(shù)全部是0;如果是右移,還與被移位的數(shù)據(jù)是否帶符號有關(guān)。若是不帶符號數(shù),則補入的數(shù)全部為0;若是帶符號數(shù),則補入的數(shù)全部等于原數(shù)的最左端位上的原數(shù)(即原符號位)。具體移位規(guī)則如下所示。
位移位運算符的優(yōu)先級如下:
·算術(shù)運算符 優(yōu)先于 位移位運算符 優(yōu)先于 關(guān)系運算符
·位移位運算符是同級別的,結(jié)合性是自左向右
例如,設(shè)無符號短整型變量a為0111(對應(yīng)二進制數(shù)為0000000001001001),
則:a3 結(jié)果為01110(對應(yīng)二進制數(shù)為0000001001001000),a不變
a4 結(jié)果為04 (對應(yīng)二進制數(shù)為0000000000000100),a不變
又如,設(shè)短整型變量a為-4(對應(yīng)二進制數(shù)為1111111111111100),
則:a3 結(jié)果為-32(對應(yīng)二進制數(shù)為1111111111100000),a不變
a4 結(jié)果為-1(對應(yīng)二進制數(shù)為1111111111111111),a不變
C語言中,“”為左移運算符,“”為右移運算符。
具體使用方法如下:
1、左移運算符()
將一個運算對象的各二進制位全部左移若干位(左邊的二進制位丟棄,右邊補0)。
例:a = a 2 將a的二進制位左移2位,右補0,
左移1位后a = a * 2;
若左移時舍棄的高位不包含1,則每左移一位,相當(dāng)于該數(shù)乘以2。
2、右移運算符()
將一個數(shù)的各二進制位全部右移若干位,正數(shù)左補0,負數(shù)左補1,右邊丟棄。
操作數(shù)每右移一位,相當(dāng)于該數(shù)除以2。
例如:a = a 2 將a的二進制位右移2位。
左補0 or 補1 得看被移數(shù)是正還是負。