在c位運算裡什麼是左移位和右移位

2021-03-03 21:41:42 字數 3151 閱讀 7150

1樓:愣愣愣愣愣愣

移位操作在程式設計中,位操作運算子的一種。

1.在c++中,移位運算子有雙目

內移位運算子:<<(左移容)和(右移)。移位運算子組成的表示式也屬於算術表示式,其值為算術值。

2.左移運算是將乙個二進位制位的運算元按指定移動的位數向左移位,移出位被丟棄,右邊的空位一律補0。3.

右移運算是將乙個二進位制位的運算元按指定移動的位數向右移動,移出位被丟棄,左邊移出的空位或者一律補0,或者補符號位,這由不同的機器而定。在使用補碼作為機器數的機器中,正數的符號位為0,負數的符號位為1。

在c++位運算裡什麼是左移位和右移位

2樓:匿名使用者

移位操作在程式設計中,位操作運算子的一種。

1.在c++中,移位運算子有雙目移位運算子:<<(左移)和>>(右移)。移位運算子組成的表示式也屬於算術表示式,其值為算術值。

2.左移運算是將乙個二進位制位的運算元按指定移動的位數向左移位,移出位被丟棄,右邊的空位一律補0。3.

右移運算是將乙個二進位制位的運算元按指定移動的位數向右移動,移出位被丟棄,左邊移出的空位或者一律補0,或者補符號位,這由不同的機器而定。在使用補碼作為機器數的機器中,正數的符號位為0,負數的符號位為1。

3樓:匿名使用者

左移位就是比如二進位制 0000 1011 左移一位就是 0001 0110,相當於乘2

右移位類似, 0000 1011 右移一位就是 0000 0101,相當於除2

c++按位左移運算子怎麼用

4樓:小呆瓜

比如int n=4;轉化成二進位制就是0000 0100,那左移一位n<<1就是0000 1000得到8,又移一位就是0000 0010得到2,移動幾位就是原始資料的幾倍或幾分之一

5樓:lo創世的大天使

要左移的數《往左移多少位

c++語言中左移位賦值是什麼意思

6樓:四捨**入

例如:m = 1;

m <<= 2;意思就是把m左移兩位後,再賦值給m。原來m的二進位制數值是0001,左移兩位後就變成了二進位制的0100,也就是十進位制的4,所以結果是m=4。

所以可以看出左移一位,相當於原來的數值乘以2,左移n位,就相當於乘以了2的n次方。

7樓:

給你舉個例子

m = 1;

m <<= 2;意思就是把m左移兩位後,再賦值給m。原來m的二進位制數值是0001,左移兩位後就變成了二進位制的0100,也就是十進位制的4,所以結果是m=4

所以可以看出左移一位,相當於原來的數值乘以2,左移n位,就相當於乘以了2的n次方

「移位運算子在移位操作中,無論左移還是右移,所移出的空位一律補0」這句話是否正確?

8樓:等風亦等你的貝

不完全正確。

1、移位操作在程式設計中,移位操作運算子的一種。

2、在c++中,移位運算子有雙目移位運算子:<<(左移)和》(右移)。移位運算子組成的表示式也屬於算術表示式,其值為算術值。

3、首先要明白一點,這裡面所有的操作都是針對儲存在計算機中中二進位制的操作,那麼就要知道,正數在計算機中是用二進位制表示的,負數在計算機中使用補碼表示的。

左移位:<<,有符號的移位操作;

左移操作時將運算數的二進位製碼整體左移指定位數,左移之後的空位用0補充;

右移位:>>,有符號的移位操作;

右移操作是將運算數的二進位製碼整體右移指定位數,右移之後的空位用符號位補充,如果是正數用0補充,負數用1補充。

無符號的移位只有右移:>>>

右移之後的空位全部補0。

4、你可以用乙個立即值(從 0 到 31)指定移位數量,或用包含在 0 和 31 之間的乙個值的暫存器指定移位數量。

邏輯或算術左移(lsl)

mov r1, #12

mov r0, r1, lsl#2

r0 是 48,這些指令形成的總和是r0 = #12, lsl#2 等同於 basic 的 r0 = 12 << 2

移位運算子在移位操作中,無論左移還是右移,所移出的空位一律補0。這句話是否正確,請說明。 謝謝

9樓:趙星宇

移位操來作在程式設計中源,位操作運算子的一種;

在c++中,移位運算子有雙目移位運算子:

<<(左移)和》(右移)。移位運算子組成的表示式也屬於算術表示式,其值為算術值;

左移運算是將乙個二進位制位的運算元按指定移動的位數向左移位,移出位被丟棄,右邊的空位一律補0。3.右移運算是將乙個二進位制位的運算元按指定移動的位數向右移動,移出位被丟棄,左邊移出的空位或者一律補0,或者補符號位,這由不同的機器而定;

在使用補碼作為機器數的機器中,正數的符號位為0,負數的符號位為1。

10樓:匿名使用者

移位操作在

抄程式設計中,bai位操作運算子的一種。du1.在c++中,移位運算子有zhi雙目移位運算子:

<<(左dao移)和》(右移)。移位運算子組成的表示式也屬於算術表示式,其值為算術值。

2.左移運算是將乙個二進位制位的運算元按指定移動的位數向左移位,移出位被丟棄,右邊的空位一律補0。3.

右移運算是將乙個二進位制位的運算元按指定移動的位數向右移動,移出位被丟棄,左邊移出的空位或者一律補0,或者補符號位,這由不同的機器而定。

在使用補碼作為機器數的機器中,正數的符號位為0,負數的符號位為1。

11樓:匿名使用者

這就是c語言copy教科書誤人的地方.大部分可bai能是對的,主要看du

主晶元性zhi能,晶元設計的好就沒問dao提,晶元效能差,指不定補的是啥.

親驗:聯發科mt6261,移位後空位補啥就不確定,有時候可能補的0,有時候可能還是原來移走的那個數比如0x0021左移八位變成0x2121,有時候可能是別的,同樣的兩個晶元可能效果都不一樣,反正不確定.最穩妥的辦法移位操作後再&0xffffff00,把移出的位置清零.

當然如果考試的話還是按教科書來,沒辦法.就像小時候大人教你很多道理,覺得很有道理,信了幾十年,結果進入社會發現現實不是這樣的,你只有嘆息,無耐,然後再教育你的小孩的時候繼續告訴他們你的父母老師曾經告訴你的"假道理".

C語言中怎樣利用移位運算(左移和右移),實現a和b值的互換

不是移位運算,是位運算吧,使用異或運算。void main 這是一道題嗎?還是樓主自己想的?感覺只左移右移 有點難吖!怎麼說呢?如果是位運算,那得看你給的a和b的值,當然還要用到與或非之類的東西,網上應該有教程吧!如果就是交換,那就是樓上的!冒泡?使用 段 for 互換條件 不一定非要用for迴圈,...

在c 中自増運算子放在變數前和變數後有什麼區別,該

其實應該這樣問,在vc6中有什麼區別。答 例如b 0 a b 結果是b 1,a 1。要是換成a b 那麼a 0,b 1。x返回值是增後值 x 返回值是增前值那個表示式的返回值是x y 1 自增前 c 裡面的應用符號 為什麼有的在變數名前面,有的在後面?有什麼區別?sales item operato...

C語言中y ab a b 1運算結果是什麼和 是什麼意思?求詳解

表示式1?表示式2 表示式3 以上是三元運算子,c語言中唯一的乙個三元運算子如果表示式版1的結權果為真 則返回表示式2的值,否則返回表示式3的值y a b?a b 1 如果a b,那麼y的值為a,否則y的值為b 1 a 1,逗號只是留下右邊的b a,a先自加1變成2,給b賦值,2作為整個賦值表示式的...