1樓:匿名使用者
有符號數和無符號數,主要是將資料轉成2進位制後,第一位的意義,有符號數第一位為符號位,1表示負數,0表示整數。無符號數第一位都是0
左移位賦值與右移位賦值有何計算規律?
2樓:
左移一位等於乘2,右移一位等於除2。
左移2位等於乘2的2次方,右移一位等於除2的2次方。
左移n位等於乘2的n次方,右移一位等於除2的n次方。
例如:0000 1100 -- 10進位制12左移一位 0001 1000 -- 10進位制24右移一位 0000 0110 -- 10進位制6
3樓:雨落深山
b <<= a; 等價於 b = b << a;
b >>= a; 等價於 b = b >> a;
<<= 左移位賦值 >>= 右移位賦值,怎麼使用?
4樓:高階局
要先將這個數換算成2進位制的數,然後再進行移位。
i = 2;//二進位制表示為10。
i << = 1;//表示i 左移一位。現在為100。
所以現在i = 4。
5樓:匿名使用者
i = 2;
i <<= 1;//i為4
i >>= 2;//i為1
c語言中「>>=,<<=,&=,^=,|=」分別表示什麼意思?請舉例說明
6樓:弋風
1、c語言中的 >>= 意思為:右移後
賦值**示例為:
x = 8; x >>= 3;
右移後結果為:00000000 00000000 00000000 00000001
2、c語言中的 <<= 意思為:左移後賦值**示例為:
x = 8;
x <<= 3;
左移後賦值結果為:00000000 00000000 00000000 01000000
3、c語言中的 &= 意思為:按位與後賦值**示例為:
x = 0x02;
x &= 0x01;
按位與後的結果為:0x00
4、c語言中的 ^= 意思為:按位異或後賦值**示例為:
x = 0x02;
x ^= 0x01;
按位異或的結果為:0x03 等同於00115、c語言中的 |= 意思為:按位或後賦值**示例為:
x = 0x02;
x |= 0x01;
按位或的結果為:0x03 等同於0011
7樓:匿名使用者
複合賦值。a>>=b相當於 a = a >> b; 以此類推。
a>>=b 表示把二進位制a右移b位,比如:
a = 8;
a >>= 3;
即:二進位制8: 00000000 00000000 00000000 00001000
右移3位: 00000000 00000000 00000000 00000001
結果是1,再把右移結果賦值給a, 即最後a=1。
<<= 同上,只不過是左移賦值。
&= 是按位與之後賦值,^=是按位異或之後賦值,|=是按位或之後賦值。與,或以及異或的操作很簡單:
101010 101010 101010
& 011100 | 011100 ^ 011100
--------- ---------- ----------
001000 111110 110110
8樓:匿名使用者
a = 0010(0x02)
a >>= 1; (a 右移1位並把右移的結果重新賦值給a) 此時a = 0001(0x01);
a <<= 1;(a左移1位並把左移的結果重新賦值給a) 此時 a = 0100(0x04);
a &= 0x01;( a與0x01 按位與,並把按位與的結果重新賦值給a)。此時a = 0x0;
a |= 0x01;( a與0x01 按位或,並把按位或的結果重新賦值給a)。此時a = 0011(0x03);
a ^= 0x01;( a與0x01 按位異或,並把按位異或的結果重新賦值給a)。此時a = 0x03;(異或的意思就是,該位均為相同的則該位結果為0,該位均為不同的則該位結果為1)
c++語言中左移位賦值是什麼意思
9樓:四舍**入
例如:m = 1;
m <<= 2;意思就是把m左移兩位後,再賦值給m。原來m的二進位制數值是0001,左移兩位後就變成了二進位制的0100,也就是十進位制的4,所以結果是m=4。
所以可以看出左移一位,相當於原來的數值乘以2,左移n位,就相當於乘以了2的n次方。
10樓:
給你舉個例子
m = 1;
m <<= 2;意思就是把m左移兩位後,再賦值給m。原來m的二進位制數值是0001,左移兩位後就變成了二進位制的0100,也就是十進位制的4,所以結果是m=4
所以可以看出左移一位,相當於原來的數值乘以2,左移n位,就相當於乘以了2的n次方
python 怎樣實現無符號右移
11樓:匿名使用者
python的整型預設都是無限寬度的大數整型。
正整數是不需要無符號右移的,>>右移即可
只有遇到負整數才需要無符號位移。
這時其實要先思考為什麼會得到負整數,通常輸入資料的部分有問題,最好做到直接輸入正整型數。
實在不得已處理負整數,可以先struct.pack轉成指定寬度位元組,再unpack成需要的正數,再普通右移處理。
12樓:匿名使用者
in [31]: 2 >>1
out[31]: 1
in [32]: 2 <<1
out[32]: 4
-7無符號右移3位和無符號左移2位怎麼計算?求寫出詳細過程。 30
13樓:肥書意邗彩
首先沒有無符號左移運算
//-7左移兩位
system.out.println(-7<<
2);//-7無符號右移三位
system.out.println(-7>>>3);
14樓:矯韋經思
因為左移是在後面補0
而右移是在前面
邊補1或0
有無符號是取決於數的前面的第一位是0還是1所以右移是會產生到底補1還是0的問題。
而左移始終是在右邊補,不會產生符號問題。
所以沒有必要無符號左移<<<。
無符號左移《和左移《是一樣的概念
15樓:萢萢
這裡好像有點矛盾,-7是有符號數吧。
16樓:匿名使用者
無符號右移3位
-(7-3)=-4
無符號左移2位
-(7+2)=-9
c語言,位符合賦值運算子, <<=,>>=,&=,^=,!=, 分別什麼含義啊?
17樓:
1.= 賦值運算子 變數
=表示式 如:a=3;將a的值賦為3
2./= 除後賦值 變數/=表示式 如:a/=3;即a=a/3
3.*= 乘後賦值 變數*=表示式 如:a*=3;即a=a*3
4.%= 取模後賦值 變數%=表示式 如:a%=3;即a=a%3
5.+= 加後賦值 變數+=表示式 如:a+=3;即a=a+3
6.-= 減後賦值 變數-=表示式 如:a-=3;即a=a-3
7.<<= 左移後賦值 變數<<=表示式 左移就是將《左邊的數的二進位制各位全部左移若干位,《右邊的數指定移動位數,高位丟棄,低位補0, 移幾位就相當於乘以2的幾次方
8.>>= 右移後賦值 變數》=表示式 右移運算子是用來將一個數的各二進位制位右移若干位,移動的位數由右運算元指定(右運算元必須是非負值),移到右端的低位被捨棄,對於無符號數,高位補0。對於有符號數,某些機器將對左邊空出的部分用符號位填補(即「算術移位」),而另一些機器則對左邊空出的部分用0填補(即「邏輯移位」)。
注意:對無符號數,右移時左邊高位移入0;對於有符號的值,如果原來符號位為0(該數為正),則左邊也是移入0。如果符號位原來為1(即負數),則左邊移入0還是1,要取決於所用的計算機系統。
有的系統移入0,有的
系統移入1。移入0的稱為「邏輯移位」,即簡單移位;移入1的稱為「算術移位」。
9.&= 按位與後賦值 變數&=表示式 按位與是指:參加運算的兩個資料,按二進位制位進行「與」運算。
如果兩個相應的二進位制位都為1,則該位的結果值為1;否則為0。這裡的1可以理解為邏輯中的true,0可以理解為邏輯中的false。按位與其實與邏輯上「與」的運算規則一致。
邏輯上的「與」,要求運算數全真,結果才為真。若,a=true,b=true,則a∩b=true
10. ^= 按位異或後賦值 變數^=表示式 參與運算的兩個量按照對應的位進行異或運算,且
0^0→0, 0^1→1, 1^0→1, 1^1→0
此外,一個數與0異或仍保持不變,即a^0=a
一個數與自己異或結果為0,即a^a=0
11.|= 按位或後賦值 變數|=表示式 參與運算的兩個量按照對應位進行或運算,且
0|0→0, 0|1→1, 1|0→1, 1|1→1
這些位運算都是與二進位制碼有關的,所以多弄弄也就會了
matlab符號運算賦值區別,matlab符號賦值運算問題
符號運算主要是為了簡便表示式以提供給程式設計師更好的邏輯思維 u sym 3 x 2 5 y 2 x y 6 這表示式如果x y取值假如是比較複雜的分數或者是無理數甚至是虛數時 有沒有虛數不大確定了 求解出的的結果是非常複雜的,如果加sym的話,則會保留分數,無理數。舉例 u sym 3 x 2 5...
c語言中為什麼左移不分符號數無符號數,而右移分呢
因為在c語言標準中bai,只du規定了無符號數的移zhi位操作是採用邏輯dao移位 即左移 右移都是使回用的邏輯答左移和邏輯右移 而對於有符號數,其左移操作還是邏輯左移,但右移操作是採用邏輯右移還是算術右移就取決於機器了!算術右移和邏輯右移的區別是 算術右移不右移符號位,即最高位,右移後前補0還是1...
C語言中指標的賦值語句中那個符號什麼時候應該帶什麼時候不帶
變數賦值給地址 指標 變數加 或者地址 指標 加 比如意思都是p指標指向了a變數的地址。include int main a中的內容是5,是取地址符,把a的地址賦給p指標。p是地址,p是內容。執行一下就知道。c語言指標什麼時候加星號什麼時候不加 1 宣告及定義一個指標時,需要用 表示識別符號是一個指...