1樓:林肯郡
首先32位系統-3預設為整形佔4位元組(32個位),二進位制表示11111111 11111111 11111111 11111101得來方法:
3的二進位制位00000000 00000000 00000000 00000011,取反補1後等到上面的值
再看下-1的二進位制11111111 11111111 11111111 11111111同樣是1取反後補1
下面看下移位因為第一位為1,右移時根據最高位補位,移1位後值為:
11111111 11111111 11111111 11111110
再移動1位就變成了:11111111 11111111 11111111 11111111後面不管你右移多少次始終是這個結果,所以-3右移2次以上後值就是-1了。
2樓:匿名使用者
>>是右移運算子,無符號數右移直接補0,帶符號數右移,負數補1,整數補0,-3的二進位制按8位來看是11111101(3的補碼),右移31位,左邊空出來的都補上1,結果是11111111,對應的帶符號數,不就是-1麼。
c語言位操作運算子 &,|,~,^,<<,>>是幹什麼的?
3樓:匿名使用者
& 按位與運算,如:1010 & 1100 = 1000| 按位或運算,如:1010 & 1100 = 1110~ 非運算,如:
a = 1010; ~a = 0101《左移,如:1110 << 1 = 1100>>右移,如:1000 >> 1 = 0100
4樓:善緣戀
當然是操作位了 任何資料都是以二進位制形式儲存的 位操作運算子就是直接對二進位制進行操作
5樓:匿名使用者
&,|,~,^,<<,>>是按位「與、或、非、異或、左移、右移」,這些操作都是按照二進位制來計算的。
6樓:匿名使用者
&,|,~,^,<<,>>分別是與、或、非、異或、小於、大於符號
7樓:匿名使用者
& 按位與運算,| 按位或運算,~ 非運算,《左移,>>右移
8樓:長移動客戶經理
>>右移,如:1000 >> 1 = 1100
c語言按位與怎麼運算?
9樓:匿名使用者
計算兩個數x,y相與的結果。
**寫作x&y
先將x與y分別寫成二進位制bit形式~~
例如計算10&30
10二進位制為1010
30為11110
然後從低位開始,每個bit分別作與運算~~其中bit的與運算,除了1&1=1外,其餘組合結果均為0故10&30=01010,即1010。。。
10樓:匿名使用者
注意a的初始化是八進位制數,十進位制表示是36929,同理a1是十進位制數
兩個數看起來是二進位制,但是都必須重新轉換為二進位制進行位運算
11樓:匿名使用者
| //按位或 有1得1 二元/二目& //按位與 有0得0 二元/二目^ //按位異或 相同得零 二元/二目~ //按位求反 一元/一目
c語言中按位與。。按位或什麼意思
12樓:匿名使用者
位運算子c語言提供了六種位運算子:
& 按位與
| 按位或
^ 按位異或內
~ 取反
容<< 左移
>> 右移
按位與運算 按位與運算子"&"是雙目運算子。其功能是參與運算的兩數各對應的二進位相與。只有對應的兩個二進位均為1時,結果位才為1 ,否則為0。參與運算的數以補碼方式出現。
例如:9&5可寫算式如下: 00001001 (9的二進位制補碼)&00000101 (5的二進位制補碼) 00000001 (1的二進位制補碼)可見9&5=1。
13樓:沉世六年
你好,請問你想問的是||和 &&嗎?
公佈自編的幾個c語言位操作函式
14樓:秀乞群群
1 測試指定的位
unsigned char bittst(unsigned char *pa,char b)//pa為被測試的物件的地址,b值為指定的位
{return *pa & (1<
c語言按位操作 a &= ~(1<<6) 什麼意思 ,第七位清零其他位不變是如何做到的
15樓:匿名使用者
通過&清0 利用 任何值&1後 值不變。 任何值&0後 值為0.
於是 要只把bit6清零 那麼 & 1011 1111 這樣一個二進位制值
就可以做到其它位不變 bit6清零。
而取反 同樣類似。
任何值^1 取反 任何值^0 不變。
置一任何值|1 =1
任何值|0 不變。
c語言中如何對一個位元組中的某個或者某幾個位進行操作,而不影響其他的位
16樓:尋秦記記
使用位運算子就可以了,舉個例子,比如char buf;要將buf的最後一位置1,可以使用
buf |= 0x01;
如果要將最後一位清零,那就使用buf &=~0x01;
c語言中的進行位操作是什麼意思
17樓:匿名使用者
數字以位元組的方式儲存!位構成位元組,位只能有兩個值不是零就是一,我們對位操作就是改變這兩值,從而改變這個位元組的儲存資訊…
18樓:
直接對二進位制數的運算、
c語言的按位運算子怎麼操作!?
19樓:匿名使用者
位運算在很多系統程式中常要求在位(bit)一級進行運算或處理。c語言提供了位運算的功能, 這使得c語言也能像組合語言一樣用來編寫系統程式。
一、位運算子c語言提供了六種位運算子:
& 按位與
| 按位或
^ 按位異或
~ 取反
<< 左移
>> 右移
1. 按位與運算 按位與運算子"&"是雙目運算子。其功能是參與運算的兩數各對應的二進位相與。
只有對應的兩個二進位均為1時,結果位才為1 ,否則為0。參與運算的數以補碼方式出現。
例如:9&5可寫算式如下: 00001001 (9的二進位制補碼)&00000101 (5的二進位制補碼) 00000001 (1的二進位制補碼)可見9&5=1。
按位與運算通常用來對某些位清0或保留某些位。例如把a 的高八位清 0 , 保留低八位, 可作 a&255 運算 ( 255 的二進位制數為0000000011111111)。
main()
2. 按位或運算 按位或運算子「|」是雙目運算子。其功能是參與運算的兩數各對應的二進位相或。只要對應的二個二進位有一個為1時,結果位就為1。參與運算的兩個數均以補碼出現。
例如:9|5可寫算式如下: 00001001|00000101
00001101 (十進位制為13)可見9|5=13
main()
3. 按位異或運算 按位異或運算子「^」是雙目運算子。其功能是參與運算的兩數各對應的二進位相異或,當兩對應的二進位相異時,結果為1。
參與運算數仍以補碼出現,例如9^5可寫成算式如下: 00001001^00000101 00001100 (十進位制為12)
main()
4. 求反運算 求反運算子~為單目運算子,具有右結合性。 其功能是對參與運算的數的各二進位按位求反。
例如~9的運算為: ~(0000000000001001)結果為:1111111111110110
5. 左移運算 左移運算子「<<」是雙目運算子。其功能把「<< 」左邊的運算數的各二進位全部左移若干位,由「<<」右邊的數指定移動的位數,
高位丟棄,低位補0。例如: a<<4 指把a的各二進位向左移動4位。
如a=00000011(十進位制3),左移4位後為00110000(十進位制48)。6. 右移運算右移運算子「>>」是雙目運算子。
其功能是把「>> 」左邊的運算數的各二進位全部右移若干位,「>>」右邊的數指定移動的位數。
例如:設 a=15,a>>2 表示把000001111右移為00000011(十進位制3)。應該說明的是,對於有符號數,在右移時,符號位將隨同移動。
當為正數時, 最高位補0,而為負數時,符號位為1,最高位是補0或是補1 取決於編譯系統的規定。turbo c和很多系統規定為補1。
main()
請再看一例!
main()
20樓:本科科長
簡單說,c程式設計的時候輸入的都是十進位制數字,但如果你要對二進位制數字進行運算,就要用這種按位運算的符號。此前編譯程式先要把十進位制變成二進位制,比如int x=67的二進位制是這樣的。
67->00000000 00000000 00000000 00100011
比如:&:有0則結果為0。 1&1=1, 其餘組合為0
比如67&1=1
|:有1則結果為1。 0|0=0, 其餘組合為1
比如67|1=67
^:異或。相反則為1
比如67^1=66
~取反: 1變0,0變1
比如67取反就變成了
11111111 11111111 11111111 11011100
也就是-66
>>:右移: 上面的就變成了00000000 00000000 00000000 00010001,也即33
<<:左移:上面的就變成了00000000 00000000 00000000 01000110,也即134
21樓:匿名使用者
&按位與,|按位或,^按位異或,-求補,>>左移,<<右移.與&一般用來將某數的某些位置零.
設二進位制是1101001的數,如果要將第四位置0,就拿它與11101111進行與
或|一般用來將兩個數合成,
比如00110011與11000000或的結果11110011異或^用來將某數的某些位取反
比如00011100將第三四位取反,就將它與00110000進行異或》左移,算術運算中是將某數除二,邏輯中是移位《右移,算術運算中是將某數乘二,邏輯中是移位如0001100邏輯左移2位0110000,1111100算術右移2位11111111,相當於除四-求補,求一個數的相反數
22樓:標苦運先
C語言中位操作 3》31值為什麼是
右移操作時,連同符號位同時移動,且符號位是1 負數 時,補1,符號位是0 正數 時補0。char a 3 3 11111101 2事實上,右移2位後,該數為11111111,次數已經是 1了。 c語言中,假設你的機器字長一個位元組是32位,那麼你注意 3在計算機補碼中表示 1111 1111 111...
C語言中的位運算是幹什麼的,c語言位運算 是什麼 有什麼作用?
如果你把所有的運算元都用二進位制來表達就清晰了,如下位與 相同位按與來運算即可如 1 2 0 二進位制是這樣的01 10 00位或 一樣,按位來或即可 1 2 3 二進位制是這樣 01 10 11 其他位運算都是按二進位制位來運算的,你轉換成2進位制就好理解了 鐵瀚楚莎莉 通常在遇到byte運算問題...
c語言中怎麼保留小數2位,C語言中如何保留一位小數點
浦雁真棋 這是由printf 這個函式的輸出格式決定的,後面的表示格式,f表示以小數形式輸出單 雙精度數,在沒有規定位數時預設為輸出6為小數,若規定了位數,則例如 m.nf則表示輸出一共為m位,其中小數佔n位,而你這個 並沒有規定小數點後有多少位,故輸出6位 卻竹青迮鵑 把printf 2f n d...