2 回答

TA貢獻(xiàn)1796條經(jīng)驗 獲得超4個贊
位運算符與賦值運算符可以組成復(fù)合賦值運算符;例如 a << =2相當(dāng)于a = a << 2
1、左移運算符(<<)
左移運算符是用來將一個數(shù)的各二進(jìn)制位左移若干位,移動的位數(shù)由右操作數(shù)指定(右操作數(shù)必須是非負(fù)值),其右邊空出的位用0填補,高位左移溢出則舍棄該高位。
例如:將a的二進(jìn)制數(shù)左移2位,右邊空出的位補0,左邊溢出的位舍棄。
若a=15,即00001111(2),左移2,位得00111100(2)。
左移1位相當(dāng)于該數(shù)乘以2,左移2位相當(dāng)于該數(shù)乘以2*2=4,15<<2=60,即乘了4。但此結(jié)論只適用于該數(shù)左移時被溢出舍棄的高位中不包含1的情況。
假設(shè)以一個字節(jié)(8位)存一個整數(shù),若a為無符號整型變量,則a=64時,左移一位時溢出的是0,而左移2位時,溢出的高位中包含1。
2、右移運算符(>>)
右移運算符是用來將一個數(shù)的各二進(jìn)制位右移若干位,移動的位數(shù)由右操作數(shù)指定(右操作數(shù)必須是非負(fù)值),移到右端的低位被舍棄,對于無符號數(shù),高位補0。對于有符號數(shù),某些機器將對左邊空出的部分用符號位填補(即“算術(shù)移位”),而另一些機器則對左邊空出的部分用0填補(即“邏輯移位”)。
注意:對無符號數(shù),右移時左邊高位移入0;對于有符號的值,如果原來符號位為0(該數(shù)為正),則左邊也是移入0。如果符號位原來為1(即負(fù)數(shù)),則左邊移入0還是1,要取決于所用的計算機系統(tǒng)。有的系統(tǒng)移入0,有的系統(tǒng)移入1。移入0的稱為“邏輯移位”,即簡單移位;移入1的稱為“算術(shù)移位”。
例: a的值是八進(jìn)制數(shù)113755:
a:1001011111101101 (用二進(jìn)制形式表示)
a>>1: 0100101111110110 (邏輯右移時)
a>>1: 1100101111110110 (算術(shù)右移時)
在有些系統(tǒng)中,a>>1得八進(jìn)制數(shù)045766,而在另一些系統(tǒng)上可能得到的是145766。Turbo C和其他一些C
編譯采用的是算術(shù)右移,即對有符號數(shù)右移時,如果符號位原來為1,左面移入高位的是1。
拓展資料
運算符含義描述
& 按位與 如果兩個相應(yīng)的二進(jìn)制位都為1,則該位的結(jié)果值為1,否則為0
| 按位或 兩個相應(yīng)的二進(jìn)制位中只要有一個為1,該位的結(jié)果值為1
^ 按位異或 若參加運算的兩個二進(jìn)制位值相同則為0,否則為1
~ 取反 ~是一元運算符,用來對一個二進(jìn)制數(shù)按位取反,即將0變1,將1變0
<< 左移 用來將一個數(shù)的各二進(jìn)制位全部左移N位,右補0
>> 右移 將一個數(shù)的各二進(jìn)制位右移N位,移到右端的低位被舍棄,對于無符號數(shù),高位補0

TA貢獻(xiàn)2011條經(jīng)驗 獲得超2個贊
a<<=n
等價于a=a<<n
a<<n表示a左移n位(二進(jìn)制)
等價于a乘以2的n次方
a<<=n的含義就是,a等于a乘以2的n次方
- 2 回答
- 0 關(guān)注
- 4153 瀏覽
添加回答
舉報