c語言121位運算,計算10!c語言

本文目錄一覽:

C語言 位運算

~取反,0取反是1,1取反是0

是左移,比如1n,表示1往左移n位,即數值大小2的n次方

右移,類似左移,數值大小除以2的n次方

按位與,1與任意數等於任意數本身,0與任意數等於0,即1x=x,0x=0

|按位或,x|y中只要有一個1則結果為1

^按位異或,x^y相等則為0,不等則為1

所有數值必須轉換為二進位數才能位運算,每一位數相對應運算

c語言位運算

一、位運算符C語言提供了六種位運算符:

按位與

| 按位或

^ 按位異或

~ 取反

左移

右移

1. 按位與運算 按位與運算符””是雙目運算符。其功能是參與運算的兩數各對應的二進位相與。只有對應的兩個二進位均為1時,結果位才為1 ,否則為0。參與運算的數以補碼方式出現。

例如:95可寫算式如下: 00001001 (9的二進位補碼)00000101 (5的二進位補碼) 00000001 (1的二進位補碼)可見95=1。

按位與運算通常用來對某些位清0或保留某些位。例如把a 的高八位清 0 , 保留低八位, 可作 a255 運算 ( 255 的二進位數為0000000011111111)。

main(){

int a=9,b=5,c;

c=ab;

printf(“a=%d\nb=%d\nc=%d\n”,a,b,c);

}

2. 按位或運算 按位或運算符「|」是雙目運算符。其功能是參與運算的兩數各對應的二進位相或。只要對應的二個二進位有一個為1時,結果位就為1。參與運算的兩個數均以補碼出現。

例如:9|5可寫算式如下: 00001001|00000101

00001101 (十進位為13)可見9|5=13

main(){

int a=9,b=5,c;

c=a|b;

printf(“a=%d\nb=%d\nc=%d\n”,a,b,c);

}

3. 按位異或運算 按位異或運算符「^」是雙目運算符。其功能是參與運算的兩數各對應的二進位相異或,當兩對應的二進位相異時,結果為1。參與運算數仍以補碼出現,例如9^5可寫成算式如下: 00001001^00000101 00001100 (十進位為12)

main(){

int a=9;

a=a^15;

printf(“a=%d\n”,a);

}

4. 求反運算 求反運算符~為單目運算符,具有右結合性。 其功能是對參與運算的數的各二進位按位求反。例如~9的運算為: ~(0000000000001001)結果為:1111111111110110

5. 左移運算 左移運算符「」是雙目運算符。其功能把「 」左邊的運算數的各二進位全部左移若干位,由「」右邊的數指定移動的位數,

高位丟棄,低位補0。例如: a4 指把a的各二進位向左移動4位。如a=00000011(十進位3),左移4位後為00110000(十進位48)。6. 右移運算 右移運算符「」是雙目運算符。其功能是把「 」左邊的運算數的各二進位全部右移若干位,「」右邊的數指定移動的位數。

例如:設 a=15,a2 表示把000001111右移為00000011(十進位3)。 應該說明的是,對於有符號數,在右移時,符號位將隨同移動。當為正數時, 最高位補0,而為負數時,符號位為1,最高位是補0或是補1 取決於編譯系統的規定。Turbo C和很多系統規定為補1。

main(){

unsigned a,b;

printf(“input a number: “);

scanf(“%d”,a);

b=a5;

b=b15;

printf(“a=%d\tb=%d\n”,a,b);

}

請再看一例!

main(){

char a=’a’,b=’b’;

int p,c,d;

p=a;

p=(p8)|b;

d=p0xff;

c=(p0xff00)8;

printf(“a=%d\nb=%d\nc=%d\nd=%d\n”,a,b,c,d);

}

c語言之中的位運算符是怎麼運算的呢?

C語言提供了表12—1所列出的6種位運算符以及表12-2所列出的5種擴展運算符。

表12-1

~

按位求反

左移

右移

按位與

^

按位異或

|

按位或

表12-2

=

a=2

a=a2

=

b=1

b=b1

=

a=b

a=ab

^=

a^=b

a=a^b

|=

a|=b

a=a|b

【說明】

位運算符中,只有「反求」(~)是單目運算符,即要求運算符兩側各有一個運算量,其餘均為雙目運算符。

運算的運算對象只能是整形或字元型數據,不能是其他類型的數據,在VC

6.0中整形數據佔4個位元組,字元型數據佔1個位元組。

參與運算時,操作數都必須首先轉換成二進位形式,然後再執行相應的按位運算。

各雙目運算符與賦值運算符結合可以組成擴展的賦值運算符,見表12-2.

12.2

位運算符詳解

12.2.1

按位與運算

按位與運算「」的運算格式:

操作數1操作數2

【說明】

其中「操作數1」和操作數「2」必須是整型或字元型數據。

按位與運算規則是:當參加運算的2個二進位數的對應位都為1,則該位的結果為1,否則為0,即00=0,01=0,10=0,11=1。

【例如】

45的運算如下:

00000100

(4)

()

00000101

(5)

00000100

(4)

因此,45的值為4。

可以利用按位與運算來實現一些特定的功能,下面介紹幾種常見的功能。

清零

如果想將一個數的全部二進位置為零,只要找一個二進位數,其中個個位要符合以下條件:原來的數中為1的位,新數中相應的位為0。然後使二者進行按位與運算即可達到清零的目的。

【例如】

原有數為171,其二進位形式為10101011,另找一個數,設它為00010100,它符合以上條件,即在原數為1的位置上,它的位值均為0。將兩個數進行運算:

10101011

()

00010100

00000000

當然也可以不用00010100這個數而用其他數(如01000100)也可以,只要符合上述條件即可。任何一個數與「0」按位於之後的結果為0。

娶一個數中某些指定位

【例如】

有一個兩位元組的短整型數x,想要取其中的低位元組,只要將x與八進位數(377)8按位於即可。如圖12-1所示,經過運算「z=xy」後z只保留x的低位元組,高位元組為0.

x

00

10

11

00

10

10

11

00

y

00

00

00

00

11

11

11

11

z

00

00

00

00

10

10

11

00

圖12-1

取x的低八位數

x

00

10

11

00

10

10

11

00

y

11

11

11

11

00

00

00

00

Z

00

10

11

00

00

00

00

00

圖12-2

取x的高8位

如果想取兩個位元組中的高位元組,如圖12-2所示只需進行運算z

=

x

(177400)8。

保留一個數的某些位

要想將哪一位保留下來,就與一個數進行運算,此數在該位取1。

【例如】

有一數01110100,想把其中左面第1、3、5位保留下來,可以這樣運算:

01110100

(十進位數116)

()

10101010

(十進位數170)

00100000

(十進位數32)

C語言位運算

不是按位與,是按位或

就是把二進位的每一位進行或運算也就是只要有一個是1,值就是1,都是0值才是0

int =1,b=2;則a|b的值為

00000000 00000000 00000000 00000001 |

00000000 00000000 00000000 00000010 =

00000000 00000000 00000000 00000011

按位與正好相反

是有一個0值就是0,只有都是1值才是1

按位異或是兩都相同為0,不相同為1

按位取反就是0變成1,1變成0了

int型是多大與CPU有關,你的書可能比較老了,還是16位,現在的主流機器都是32位的,先進的都64位了

C語言中的位運算是怎樣的

C語言是為描述系統而設計的,它的第一個應用就是UNIX操作系統的設計,因此必須具有低級語言的特點。指針運算和位運算就是其代表。

我們知道,計算機中的信息以及控制信號均是以二進位碼的0、1的形式存儲和處理的。每一個0或1稱為一個「位」(bit),8位構成一個位元組(byte)。在內存中,每一個位元組均有一個編號,稱為內存地址。

在以前的各章節中,我們都是將一個位元組(如字元型)和若干位元組(如整型、實型等)中的內容作為一個整體進行處理的(賦值、運算、I/O操作)。

位運算則是針對這些位元組中的若干位進行操作。這在系統軟體設計中和自動控制中是十分有用的。

C語言的位運算符有~,,

,

,

|,

^共6個,並可與賦值運算符相結合(除~外)成為位運算賦值操作。

應注意:參與位運算的量只能是整型和字元型。

c語言的位符號 都是怎麼運算的啊

C語言提供的位運算符列表:

運算符

含義

描述

按位與

如果兩個相應的二進位位都為1,則該位的結果值為1,否則為0

|

按位或

兩個相應的二進位位中只要有一個為1,該位的結果值為1

^

按位異或

若參加運算的兩個二進位位值相同則為0,否則為1

~

取反

~是一元運算符,用來對一個二進位數按位取反,即將0變1,將1變0

左移

用來將一個數的各二進位位全部左移N位,右補0

右移

將一個數的各二進位位右移N位,移到右端的低位被捨棄,對於無符號數,高位補0

原創文章,作者:HBJH,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/140750.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
HBJH的頭像HBJH
上一篇 2024-10-04 00:24
下一篇 2024-10-04 00:24

相關推薦

  • AES加密解密演算法的C語言實現

    AES(Advanced Encryption Standard)是一種對稱加密演算法,可用於對數據進行加密和解密。在本篇文章中,我們將介紹C語言中如何實現AES演算法,並對實現過程進…

    編程 2025-04-29
  • 學習Python對學習C語言有幫助嗎?

    Python和C語言是兩種非常受歡迎的編程語言,在程序開發中都扮演著非常重要的角色。那麼,學習Python對學習C語言有幫助嗎?答案是肯定的。在本文中,我們將從多個角度探討Pyth…

    編程 2025-04-29
  • Python被稱為膠水語言

    Python作為一種跨平台的解釋性高級語言,最大的特點是被稱為”膠水語言”。 一、簡單易學 Python的語法簡單易學,更加人性化,這使得它成為了初學者的入…

    編程 2025-04-29
  • OpenJudge答案1.6的C語言實現

    本文將從多個方面詳細闡述OpenJudge答案1.6在C語言中的實現方法,幫助初學者更好地學習和理解。 一、需求概述 OpenJudge答案1.6的要求是,輸入兩個整數a和b,輸出…

    編程 2025-04-29
  • Python按位運算符和C語言

    本文將從多個方面詳細闡述Python按位運算符和C語言的相關內容,並給出相應的代碼示例。 一、概述 Python是一種動態的、面向對象的編程語言,其按位運算符是用於按位操作的運算符…

    編程 2025-04-29
  • Python語言由荷蘭人為中心的全能編程開發工程師

    Python語言是一種高級語言,很多編程開發工程師都喜歡使用Python語言進行開發。Python語言的創始人是荷蘭人Guido van Rossum,他在1989年聖誕節期間開始…

    編程 2025-04-28
  • Python語言設計基礎第2版PDF

    Python語言設計基礎第2版PDF是一本介紹Python編程語言的經典教材。本篇文章將從多個方面對該教材進行詳細的闡述和介紹。 一、基礎知識 本教材中介紹了Python編程語言的…

    編程 2025-04-28
  • Python語言實現人名最多數統計

    本文將從幾個方面詳細介紹Python語言實現人名最多數統計的方法和應用。 一、Python實現人名最多數統計的基礎 1、首先,我們需要了解Python語言的一些基礎知識,如列表、字…

    編程 2025-04-28
  • Python作為中心語言,在編程中取代C語言的優勢和挑戰

    Python一直以其簡單易懂的語法和高效的編碼環境而著名。然而,它最近的發展趨勢表明Python的使用範圍已經從腳本語言擴展到了從Web應用到機器學習等廣泛的開發領域。與此同時,C…

    編程 2025-04-28
  • Python基礎語言

    Python作為一種高級編程語言擁有簡潔優雅的語法。在本文中,我們將從多個方面探究Python基礎語言的特點以及使用技巧。 一、數據類型 Python基礎數據類型包括整數、浮點數、…

    編程 2025-04-28

發表回復

登錄後才能評論