C語言如何表示二進位制?C語言如何定義二進位制變數?

2023-02-15 14:40:12 字數 5979 閱讀 2941

1樓:1024程式設計師

c語言中二進位制的表示方法。

2樓:良慶慕容思博

c語言中沒有二進位制的格式輸出符號。

你可以用itoa函式很方便的將一個10進位制int轉變成二進位制字串。

如:inti;

chars[128];

scanf("%d",&i);

itoa(i,s,2);/3個引數,第一個是待轉換的數,第二個是存放轉換後的字串,第三個即需要轉換的進位制*/

printf("該數轉換為二進位制是:[%s]",s);

補充一點,itoa函式的標頭檔案是。

3樓:網友

這裡i(因為八進位制是以0開頭)相當於八進位制的10,轉換成二進位制就是001000,轉換為十進位制就是8

4樓:小帆向前衝

0開始表示8進位制,0x開始表示16進位制,沒有專門的二進位制表示方法。

5樓:匿名使用者

0bx ; 前面的不知道別胡說八道誤人子弟。

c語言如何定義二進位制變數?

6樓:匿名使用者

c語言中沒有 「二進位制變數」這一說法!

c語言中的資料基本型別包括:char short int long float double . 用哪種型別定義的就叫xx型別變數,如字元型變數,整型變數,浮點型變數。

各種變數中儲存的資料,都是以二進位制進行儲存的。因型別的不同,採用的二進位制編譯格式不同。如:整形類都是用補碼儲存,浮點型採用ieee754標準儲存。

對於int a=0x1a ; int b=0101 ;這種變數初始化中,a,b依然是整形變數,0x1a這種以0x開頭的資料表示16進位制常數(或稱常量),0101這種以0開頭的數字表示8進位制常數。但程式設計中並沒有規定二進位制常數的表示形式,如果需要使用的話,可以採用字元陣列來儲存二進位制數,如:

char a[100] =10100101" ;

需要運算時,再通過自定義函式將字串轉換成整數。

7樓:聽不清啊

c語言裡沒有類似的直接由二進位制形式賦值給變數的。

8樓:滄海雄風

c語言中沒有 「二進位制變數」這一說法!

對於int a=0x1a ; int b=0101 ;這種變數初始化中,a,b依然是整形變數,0x1a這種以0x開頭的資料表示16進位制常數(或稱常量),0101這種以0開頭的數字表示8進位制常數。但程式設計中並沒有規定二進位制常數的表示形式。

9樓:蓉雪球

十六進位制的運算就是二進位制的運算,其實我認為用16進位制僅僅是對二進位制資料的一種壓縮而已:

用程式來實現的話就是。

10樓:匿名使用者

boost_binary,某些編譯器支援0b字首作為擴充套件。

11樓:匿名使用者

c語言裡沒有二進位制數的表示法,可以通過位運算操作變數的各個位,如b=(a>>2)&1;

c語言中如何給一個變數賦一個二進位制數

12樓:匿名使用者

二進位制沒有表示方法。 c系列語言中,通常想要以二進位制操作的時候,我們叫它位操作,所以使用移位運算子「<

13樓:匿名使用者

int a;a=0b11101101; /0b代表2進位制數 0x代表16進位制數 直接寫數值預設為10進位制數。

14樓:匿名使用者

輸出二進位制的也看不懂 照樣十六進位制看起來便利一點 贊成。

c語言中如何提取二進位制數中的某一位?

15樓:檀香透窗欞

下面是三種方式:

①通過模2除2(62616964757a686964616fe59b9ee7ad9431333366306434%2、/2)的方法。

num%2——取出二進位制的最後一位。

num/2——右移去掉二進位制的最後一位。

通過while迴圈,依次取出二進位制的最後一位數字判斷是否為1,若為1則count++,while(num)只有當num變為0時迴圈結束。

問題:在測試-1出現bug,-1的二進位制中應該有32個1,輸出卻為0。我們將-1帶入**中發現-1%2=0,count不增,然後-1/2=0,迴圈結束,故輸出count的值為0。

解決方案:將變數num的資料型別改為unsigned int (無符號整型),此時表示的是正的整型的最大值,所以當num=-1時,表示二進位制為32個1的正數,通過迴圈可以輸出正確的個數。

②通過右移操作符(>>按位與操作符(&)實現。

example:當num=10(1010),通過右移操作num>>i,二進位制向右移動i位。

//i=0,num>>0,右移0位,此時(1010)&(0001)=0

//i=1,num>>1,右移1位,此時(0101)&(0001)=1,count++

//i=2,num>>2,右移2位,此時(0010)&(0001)=0

//i=3,num>>3,右移3位,此時(0001)&(0001)=1,count++

……因為二進位制共32位,所以迴圈要執行32次後結束,得到count為2。

缺點:不夠高效,必須迴圈32次。

③通過按位與操作符(&)巧妙運算實現。

example: 當num=15時,1//num&(num-1)=(1111)&(1110)=(1110)

2//num&(num-1)=(1110)&(1101)=(1100)

3//num&(num-1)=(1100)&(1011)=(1000)

4//num&(num-1)=(1000)&(0111)=0 ,迴圈停止。共執行4次while迴圈。

16樓:匿名使用者

例如 求10(1010)的第三位數。

int a=10;

int b=a;

b=b>>(3-1)&1;

得到的b就是10的第三位。

17樓:八百攝氏度的歆

用&運算子。

例如:得出1101 0011的第5位,1101 0011&(1<<5)即可。

18樓:匿名使用者

#include

//get_bit函式,抄獲取變襲量bainum中的index位。

int get_bit(int num, int index);

int main()

return 0;

}int get_bit(int num, int index)

19樓:匿名使用者

利用按位bai求與運算。

比如du說。

16位二進位制數a:

1000 1000 1000 1000,如果你想獲zhia的哪一位dao

就把數字b:

0000 0000 0000 0000的那一為版設定為1.

比如說我想權獲得a的第三位。

就把b的第三位數字設定為1,則b為。

0000 0000 0000 0100,之後a、b求與,結果若為0,說明a的第三位為0,結果為1,說明a的第三位為1.

同理:若要獲得a的第五位,就把b設定為。

之後再求與。

通常在程式中。

數字b被稱為掩碼,就是專門用來測試某一位是否為0的數值。

希望對你有用。

如何在c語言中輸出二進位制數???

20樓:金色潛鳥

可以用 %x格式 輸出16進位制數,16進位制一位拉4位,按8421分佈,就是2進位制數。1個位元組正好用2位16進製表示,轉為8位2進位制。

21樓:電烙鐵和焊錫

二進位制是不可以直接輸出的,但是可以用程式輸出#include

void f(int n)

int main()

return 0;}

22樓:匿名使用者

沒有二進位制這個格式吧。

你可以寫個函式轉化一下。

c語言的二進位制數值如何直接輸出?

23樓:熊熊熊灬熊孩子

c標準沒有輸出二進位制的,不過用itoa()可以實現到二進的轉換。

可以使用itoa函式把變數的數值轉換成2進位制字串,再用輸出函式輸出。

用 法:char *itoa(int value, char *string, int radix);

詳細解釋:itoa是英文integer to array(將int整型數轉化為一個字串,並將值儲存在陣列string中)的縮寫。

引數:value: 待轉化的整數。

radix: 是基數的意思,即先將value轉化為radix進位制的數,範圍介於2-36,比如10表示10進位制,16表示16進位制。

* string: 儲存轉換後得到的字串。

返回值:char * 指向生成的字串, 同*string。

備註:該函式的標頭檔案是""

下列函式可以將字串轉換為數字:

函式名 作 用。

atof() 將字串轉換為雙精度浮點型值。

atoi() 將字串轉換為整型值。

atol() 將字串轉換為長整型值。

strtod() 將字串轉換為雙精度浮點型值,並報告不能被轉換的所有剩餘數字。

strtol() 將字串轉換為長整值,並報告不能被轉換的所有剩餘數字。

strtoul() 將字串轉換為無符號長整型值,並報告不能被轉換的所有剩餘數字。

將字串轉換為數字時可能會導致溢位,如果你使用的是strtoul()這樣的函式,你就能檢查這種溢位錯誤。請看下例:

**如下:# include

# include

# include

void main(void);

void main (void)

c語言中 怎樣區分八進位制 十進位制 二進位制?

24樓:匿名使用者

在c語言裡,整數有三種表示形式:十進位制,八進位制,十六進位制。

其中以數字0開頭,由0~7組成的數是八進位制。以0x或0x開頭,由0~9,a~f或a~f 組成是十六進位制。除表示正負的符號外,以1~9開頭,由0~9組成是十進位制。

1.十進位制:除表示正負的符號外,以1~9開頭,由0~9組成。如,128,+234,-278。

2,八進位制:以0開頭,由0~7組成的數。如,0126,050000.

3,十六進位制:以0x或0x開頭,由0~9,a~f或a~f 組成。如,0x12a,0x5a000.

25樓:任成偉

程式語言通常規定是以0開頭的數字是八進位制數,以0x開頭的數字是十六進位制數,其餘的就是十進位制數,至於你說的「十進位制是d表示 二進位制是b 十六進位制是h」在編寫程式時是不能用的,那只是為了方便,書寫時(不是在計算機上程式設計時)用到的(只對於c語言程式設計,組合語言程式設計時,是寫上的),你的程式 int x=011中,x是用八進位制表示的一個數字,他是9.後面的printf("%d",+x);是以10進位制形式列印結果(%d的作用),所以程式執行的結果是9.

26樓:樂vov樂

0開頭的是八進位制。

0x開頭的是十六進位制。

普通的就是十進位制。

27樓:o荔枝紅了

0開頭的是八進位制。

0x開頭的是十六進位制。

28樓:匿名使用者

011前面為0所以為八進位制。

29樓:獅子xy愛我

區分十進位制和二進位制方法就是十進位制是滿10個進一個,二進位制就是滿兩個進一個。

C語言將某檔案以二進位制形式開啟,二進位制資料存入一維陣列中!急急急

include include int main b int calloc j,sizeof int 分配一維陣列儲存 rewind fp1 for i 0 i 1.fopen函式開啟需要讀取的文字,獲取該檔案的檔案描述符2.使用fscan 函式對檔案進行讀取。3.放到二維陣列其實就是讀取相應格式的...

用c語言程式設計,實現十進位制和二進位制的相互轉化

include int getnumber char s,int n return k else return 0 void exchange char s,int n,int k for i 0 ivoid main include int main printf 二進位制為 i for i 0 ...

c語言中二進位制十進位制十六進位制各是什麼意思

計算機中常用的數的進位制主要有 二進位制 八進位制 十六進位制,學習計算機要對其有所瞭解。2進位制,用兩個阿拉伯數字 0 1 8進位制,用八個阿拉伯數字 0 1 2 3 4 5 6 7 10進位制,用十個阿拉伯數字 0到9 16進位制就是逢16進1,但我們只有0 9這十個數字,所以我們用a,b,c,...