C語言中位操作,C語言位操作運算子 , , , , , 是幹什麼的?

時間 2022-11-01 13:05:01

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