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...