關於c語言的左移和右移,關於C語言的左移和右移

2021-03-03 21:57:21 字數 2582 閱讀 4073

1樓:匿名使用者

左移比較簡單,右邊補0(移幾位就補幾個0),左邊丟掉。

右移比較複雜,右移分兩種:

(1)邏輯右移,左邊補0(移幾位補幾位),右邊移出去的丟掉。

(2)算術右移,左邊補最高位(即原來的最高位是0就補0,是1就補1,因為最高位代表符號,這樣可以保證負數不會變成正數),右邊丟掉。

2樓:我不知道啊啊

可以定義一箇中間變數暫存要被移出去的位,正常移位之後再或上這個中間變數即可~

c程式中,左移「<<」、右移「>>」 的具體用法是什麼?

3樓:匿名使用者

c語言中,「

<<」為左移運算子,「>>」為右移運算子。

具體使用方法如下:

1、左移運算子(<<)

將一個運算物件的各二進位制位全部左移若干位(左邊的二進位制位丟棄,右邊補0)。

例:a = a << 2 將a的二進位制位左移2位,右補0,左移1位後a = a * 2;

若左移時捨棄的高位不包含1,則每左移一位,相當於該數乘以2。

2、右移運算子(>>)

將一個數的各二進位制位全部右移若干位,正數左補0,負數左補1,右邊丟棄。

運算元每右移一位,相當於該數除以2。

例如:a = a >> 2 將a的二進位制位右移2位。

左補0 or 補1 得看被移數是正還是負。

4樓:匿名使用者

這是兩個位操作運算,是對引數二進位制方式的位移,移動後,空出的位用0補上。例如:

0111 0101 b << 2 :對這個數左移二位後:1101 0100 b;

再如:5 << 3 :先轉換成二進位制:0000 0101 b << 3 = 0010 1000 b = 0x28

c語言 左移 右移的問題 << 或 >>

5樓:匿名使用者

左移 右移不會修改a本身

a=ox32 (16進位制) 0011 0010b=a<<2

這個時候b=1100 1000 對

那麼此時a=0011 0010

繼續c=a<<2

請問c是在原來a的初值(ox32)上移動

這個時候c=1100 1000

6樓:圍城

b=a<<2

這個時候b=1100 1000 對!

那麼此時a=0011 0010 沒變

接著c=a<<2

c是在原來a的初值上移動,因為a沒變

c=b=1100 1000

最後c=b=1100 1000

a=0011 0010

7樓:匿名使用者

a << 2 是不影響a 的值的,就像a +1不會把a值加1一樣 。

a << 2只是一個表示式,返回的是表示式計算得到的值,其中並沒有賦值(『=』)操作啊。

c語言中的<<和>>左右移運算子有什麼作用,謝謝!

8樓:匿名使用者

左移運算子「

<<」是指將一個數的各個二進位全部左移若干位 左移的過程中右邊則補0,高位溢位捨棄不用。一般情況下【不包括左移高位溢位捨棄的數中不包含1的情況】左移n位後,使該數變成原來數的2的n次方倍。右移相反

大神能詳細說說,c語言中右移,左移,按位或,是怎麼用的?能給個例子?<< >> ^

9樓:城隍廟街景

int a=1;

a<<=1; // a=2

a>>=1; //a=1

a= a^a; //a=0

10樓:小黑跳大不解釋

這怎麼舉例。。。你有什麼不懂 我告訴你好了

c語言中關於左移<<運算子的問題

11樓:可愛小爬爬

原因:第一個k<<1只是表示k左移一位,但是這個運算結果並沒有給k而是依舊儲存在計算機cpu中的運算器中,同時你是用%d將這個結果列印出來,用%d格式表示把這個結果看成了int型,即型別擴大為int型,k<<1相當於2*k,在int型中65534沒有出界,所以就是這個結果。

第二個j<<=1;等價於j=j<<1;你看運算的結果給了j,而j是short int型,所以此時j=1111111111111110(最後一位為補進的0),而short int 最多是16位,這樣它的最高位為1,所以是負數,這是個補碼,其原碼為-(1111111111111110-1)按位取反,即為-0000000000000010=-2,最後用%d列印出的就是這個結果

c語言位移(左移右移有無符號)之後可以返回原值麼?

12樓:匿名使用者

左移右移並不會改變原值,例如

int a = 1;

a<<2;

printf("%d", a); //輸出還是1如果你問的是

int a=1;

a=a<<2;

a=a>>2;

那麼最終a的值還是1

但是如果溢位了就移不回來了

關於C語言,有關c語言的?

什麼都不用學,這就是所謂的要學乘除先學加減中的加減了,他就是最基本的計算機入門課程了。當然,你對於基本的加減乘除做法還是要會,對於英文字母還是要認得,就這樣了。但我還是給你講一點初學者的難點,因為初學者很多東西都不知道,在初學時關鍵要理解到,什麼是變數,資料型別,函式,對於c語言,首先弄懂這三個東東...

c語言中關於,C語言中關於ch ch a A 的大小寫轉換,為什麼不直接是「ch ch 32」?請大俠詳解!!!

兩種寫法結果一致,之所以寫成第一個 是 可閱讀性 更好,通過 很容易明白在做什麼,而第二個ch 32,32 來的?為什麼是32?非編寫者閱讀程式會很痛苦。因為比較清楚,讓閱讀 的人一看就知道這行 的目的是執行大小寫轉化 以後寫程式多向此學習,類似情況要多采用全字元處理,這樣可以避免資料型別轉換出現問...

C語言,關於return,c語言 關於return i j

樓主你好,如果一個程式執行到return語句的時候,他會立即返回而不會執行return之後的語句,例如 include stdio.h void func void main 那麼這個程式將不會輸出bbbb。希望能對樓主有些幫助!不會執行,return,就是這個函式返回了,相當於跳過這個子函式ret...