1樓:不懂多來問問
這是位運算:
根據編譯器計算結果是:9 說明它的運算順序是從右至左運算的。
先計算b<<2 b=0010 左移兩位結果是: b=1000
再計算a或b a=0001 b=1000 相或結果為 c=1001 也就是9
如果你對位運算不太理解,我把我的筆記給你吧。
下面是我在學習位運算時的筆記,你看下吧,很清楚的,看明白後就懂了。
位與位元組
1,按位運算也就是對位元組或字中的實際位進行檢測,設定或移位。
2,c語言中的位運算子有:
運算子 功能 運算子 功能 運算子 功能
& 按位與 ~ 取反 << 左移
| 按位或 ^ 按位異或 >> 右移
3,按位與運算子(&):是雙目運算子,功能是使參與運算的兩數各對應的二進位相「與」,只有對應的兩個二進位均為1 時,結果為1,否則為0.
如:0000000000010110
& 0000000010001101
結果為:0000000000000100
//與運算的一個作用是清零,可以設法將一個原數中為1的位置0,只要將它與全部為0的數進行與運算即可。
//與運算的另一個作用是取特定位,可以通過與的方式取一個數中的某些指定位。如上可以對結果取位數為1的位。
4,按位或運算子(|)是雙目運算子,功能是使參與運算的兩數中各對應的二進位相或,只要對應的兩個二進數有一個為1 時,結果就為1,否則為0.
5,按位取反運算子(~)為單目運算子,具有右結合性。其功能是對參與運算的數的各二進位按位求反,即將0變為1,將 來變為0.
//在進行取反運算的過程中切不可簡單地認為對一個數取反後的結果就是該數的相反數(即~25就是-25)這是錯誤的, 按位求反是對二進位制數按位取反。
6,按位異或運算子(^)是又目運算子,其功能是使參與運算的兩數各對應的二進位相異或,當對應的兩個二進位數相異或 時,兩數都為1時結果為0,有一個數為1時,結果為1,其它情況也為0.
//異或操作的一個主要用途就是能使特定的位翻轉,另一個主要用途就是在不使用臨時變數的情況下實現兩個變數值的 互換。
//異或運算經常用到一些比較簡單的加密演算法中。
7,左移運算子(<<)是雙目運算子,其功能是把"<<"運算子左邊的運算數的各二進位全部左移若干位,移動的位數由"<<" 運算子右邊的數指定,高位丟棄,低位補0。 如:a<<2 //代表a的二進數向左移動2位。
//實際上左移一位相當於該數乘以2,稱動2位 相當於該數乘以4,以此類推。這種情況只限於移動位不含1的情況。
8,右移運算子(>>)是雙目運算子,其功能是把">>"運算子左邊的運算數的各二進位全部右移若干位,移動的位數按">>" 運算子右邊的數指定。
//在進行右移時對於有符號的數需要注意符號問題,當為正數時,最高位補0,而為負數時,最高位補0或1取決於編譯 系統的規定,移入0的稱為"邏輯右移",移入1的稱為"算術右移"。(visualc++)是以算術右移。
迴圈移位
1,迴圈移位就是將移出的低位放到該數的高位或者移出高位放到該數的低位。
如:a.00110000,00000000,11010000,00001011 左迴圈移動4位
z.10110000,00000000,00000000,00000000 先左移32-4=28位後的結果。 公式為:z=a<<(32-n) //此時n=4
y.00001100.00000000,00001101.00000000 再右移4位的結果。 y=a>>n
a.10111100.00000000,00001101.00000000 這就是迴圈左移4位的結果。 a=z|y
2,右迴圈移動的方法類似,只需要轉換即可。
2樓:匿名使用者
答案是9
符號^是異或的意思,也就是兩個操作位,如果是不同的,則計算結果是1符號《是左位移的意思,按位移動
c=a^b<<2 的計算順序是先計算b<<2,即2<<2得8然後計算 a^8 = 1^8 = (2進位制)0001^(2進位制)1000 = (2進位制)1001 = 9
3樓:清風月影疏
1^1=0 0^0=0 1^0=1 0^1=00001 1100
^ 1000 ^ 1001= 1001 = 0101
char c=a^b<<2 a=1,b=2. c=?
4樓:張卓賢
a=1 其二進位制碼為 00000001b=2 其二進位制嗎為 00000010
^是異或運算(二進位制碼的)二進位制碼相同為0 不同為1<<是二進位制碼的左移運算 就是將二進位制碼的1向左移動n位《運算的優先順序比^高
所以 c=a^b<<2
就是說 先把b的二進位制碼(00000010)左移兩位 00001000
然後與a(00000001)進行異或運算 得 00001001這個二進位制碼轉換為10進位制 就是9
c++已知a=1,b=2.c=3 ,則表示式++a||-b&&++c 的值是()這個道題怎麼做
5樓:匿名使用者
根據運算子的優先順序,表示式等價於
(++a) || (-b) && (++c)在c/c++中 0為false,非0就是true,上面的表示式就等於true || true && true
所以最終的值就是true,如果按照整數輸出,則為1
6樓:匿名使用者
簡單你只要知道在c語言中0代表偽,非0代表真
把值代進去就可以了
結果為真(1)
7樓:匿名使用者
值吱吱吱自治組織組織重中之重這孩子=(1)
一下程式執行後,int a=2,b=3,c;c=(a^b)<<2,c的值是?
8樓:
2與3異或結果為1,然後左移2位,相當於乘以4,因此c的值為4.
9樓:匿名使用者
32,2的3次冪為8,向左移兩位就是乘2*2得32
位操作:先轉化為二進位制,比如說8->1000
左移兩位即是100000,化為十進位制就是32.
10樓:匿名使用者
a^b=01
01<<2=4c=4
已知int a=1,b=2,c=3;,則邏輯表示式a<b‖++c運算後,c的值是
11樓:
c的值不變,還是3。
因為a
真 || 任何邏輯值 都為真。
已知char a=3,b=6,c;c=a^b<<2;則c的二進位制值是多少?
12樓:琳琳姐
首先b=6化為二進位制為110,《優先順序較高像左移2位為11000,再與a做異或,a=11,所以c=11011
int a =1 b= 2 c= 3 語句(++b,a)||(a++,c++);執行後a,b,c是多少
13樓:匿名使用者
(++b,a)||(a++,c++);
首先計算(++b,a):逗號表示式(++b,a)=a=1 過程中++b:b==3
由於使用||的邏輯運算子,當左邊的值為真的時候,整個表示式的值即為真,計算機就不會再去計算(a++,c++),因此
a=1(參加左邊運算,卻沒改變值的大小)
b=3(參加運算,值自加1)
c=3(不參加右邊運算,值不變)
14樓:匿名使用者
a=1,b=3,c=3
首先執行++b,b的值變為3,因為括號內表示式是逗號運算所以整個表示式的結果是a
因為a的值為1,為真,||的特性是兩個表示式有一個是真結果都為真,所以||後面的表示式並未執行
如果int a=1,b=2,c=3,d=4,則條件表示式「a<b?a:c<d?c:d」的值是多少?要求解答詳細點哈,...
15樓:德形兼備
當a < b 成立 則結果就是 a
如果 a < b 不成立 則結果要判斷 c 2, c 所以這題 結果是a =1 16樓:匿名使用者 條件運算子的結合性是從右到左結合的,先算」c<d?c:d「返回「c=3」;再算「a<b?a:c」返回值為1。 17樓:何慧哈 先判斷a<b為真取a值,得等式a<d?c:d,再判斷a<d為真取c值,在軟體裡執行也是這個值 18樓:匿名使用者 a<b? true 所以返回的是a 條件表示式「a<b?a:c<d?c:d」的值是 1 a和b都佔一個位元組,因此a和b的二進位制形式分別是a 0000 0011 b 0000 0110 因此b先右移兩位 得到b 0000 0001 然後c a b 得到c 0000 0010 即整數2 樓主如果對於優先順序不太熟悉,建議在寫表示式的時候使用括號吧 已知char a 3,b 6,c c ... 因為a b為真所以a b 1,而1不可能大於1,所以a b 1為假,所以a b 1 0,導致 後的語句不執行,所以c 0,a 3,b 2,所以a b c 5 不懂那個表示式是什麼意思 c語言中。int a 1,b 0,c 1 執行語句 b a c 後,a,b,c 或運算,而且是左結合,b為真,整個表... 準駕車型及代號如下 現在a1,a2,b1,b2,c1之間關係是 c1 可以直接初領或任意駕照滿1年增駕 滿1年可增駕大型貨車b2 滿3年可增駕中型客車b1 b2 可以直接初領或任意駕照滿1年增駕 滿1年可增駕大型客車b1 滿3年可增駕牽引車a2 滿5年可增駕大客車a1 b1 滿3年可增駕牽引車a2 ...有語句char a 3,b 6,c a b》2運算後c中的二進位制數是
假定int a 3,b 2,c 0表示式c a b 1a1 ba b c的值是
請問,駕駛證,a1 a2 a3 b1 b2 c1 c2 c