2 回答

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

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