itoa()可以實(shí)現(xiàn)到二進(jìn)的轉(zhuǎn)換
發(fā)展壯大離不開廣大客戶長期以來的信賴與支持,我們將始終秉承“誠信為本、服務(wù)至上”的服務(wù)理念,堅(jiān)持“二合一”的優(yōu)良服務(wù)模式,真誠服務(wù)每家企業(yè),認(rèn)真做好每個(gè)細(xì)節(jié),不斷完善自我,成就企業(yè),實(shí)現(xiàn)共贏。行業(yè)涉及成都木屋等,在成都網(wǎng)站建設(shè)公司、成都全網(wǎng)營銷推廣、WAP手機(jī)網(wǎng)站、VI設(shè)計(jì)、軟件開發(fā)等項(xiàng)目上具有豐富的設(shè)計(jì)經(jīng)驗(yàn)。
int
a
=
10;
char
binbuf[32];
//存儲二進(jìn)制字串的空間
printf("%s\n",
itoa(a,
binbuf,
2));
//最后一個(gè)參數(shù)2表示2進(jìn)制
C語言中沒有 “二進(jìn)制數(shù)”這種類型,所以沒辦法直接定義;但可以直接定義16進(jìn)制數(shù)。
例:
int main(){
int a;
scanf("%p",a);//16進(jìn)制數(shù)輸入%p是輸入一個(gè)十六進(jìn)制的數(shù)scanf("%llx",a);也可以輸入十六進(jìn)制并且比較正規(guī)
printf("%d",a);//十進(jìn)制輸出%d是輸出一個(gè)十進(jìn)制的數(shù)
printf("0x%x",a);//16進(jìn)制輸出printf("%llX\n",a);也可輸出一個(gè)十六進(jìn)制數(shù)如果紅色部分大寫X則輸出十六進(jìn)制為大寫字母否則小寫x輸出為小寫字母
}
擴(kuò)展資料
C語言中定義整型數(shù)據(jù)的十六進(jìn)制數(shù):
unsigned int hex_val = 0x123;
//定義了一個(gè)整型變量并賦以初始值為一個(gè)十六進(jìn)制常量。
if (scanf("%x", hex_val) != EOF)
{
printf("它的八、十進(jìn)制分別=%o、%d\n", hex_val, hex_val);
}
1、打開visualC++6.0-文件-新建-文件-C++SourceFile。
2、輸入預(yù)處理命令和主函數(shù):
#includestdio.h? ? ? ? ? ?/*輸入輸出頭文件*/
voidmain()/*空類型:主函數(shù)*/
3、定義變量和數(shù)組的數(shù)據(jù)類型并輸入一個(gè)十進(jìn)制:
intb[16],x,k,r,i;/*定義變量和數(shù)組的數(shù)據(jù)類型為整型*/
printf("輸入一個(gè)十進(jìn)制:");/*輸出文字提示*/
scanf("%d",x);? ? ? ? ?/*輸入一個(gè)十進(jìn)制數(shù)字*/
k=-1;/*將-1賦給k*/
4、用除R取余倒計(jì)法將十進(jìn)制的數(shù)轉(zhuǎn)化成二進(jìn)制的數(shù):
do/*用循環(huán)將十進(jìn)制的數(shù)轉(zhuǎn)化成二進(jìn)制的數(shù)*/
{
r=x%2;/*用除R取余倒計(jì)法計(jì)算二進(jìn)制*/
b[++k]=r;/*將值賦給數(shù)組*/
x/=2;/*將原數(shù)除2*/
}while(x=1);
5、輸出結(jié)果:
for(i=k;i=0;i--)? ? ? ? /*將上面倒計(jì)的數(shù)正回來*/
printf("%d",b[i]);/*輸出結(jié)果*/
printf("\n");
6、完整的源代碼:
#includestdio.h? ? ? ? ? ?/*輸入輸出頭文件*/
voidmain()/*空類型:主函數(shù)*/
{
intb[16],x,k,r,i;/*定義變量和數(shù)組的數(shù)據(jù)類型為整型*/
printf("輸入一個(gè)十進(jìn)制:");/*輸出文字提示*/
scanf("%d",x);? ? ? ? ?/*輸入一個(gè)十進(jìn)制數(shù)字*/
k=-1;/*將-1賦給k*/
do/*用循環(huán)將十進(jìn)制的數(shù)轉(zhuǎn)化成二進(jìn)制的數(shù)*/
{
r=x%2;/*用除R取余倒計(jì)法計(jì)算二進(jìn)制*/
b[++k]=r;/*將值賦給數(shù)組*/
x/=2;/*將原數(shù)除2*/
}while(x=1);
for(i=k;i=0;i--)? ? ? ? /*將上面倒計(jì)的數(shù)正回來*/
printf("%d",b[i]);/*輸出結(jié)果*/
printf("\n");
}
在C語言的標(biāo)準(zhǔn)輸出中,有16進(jìn)制,10進(jìn)制和8進(jìn)制的輸出格式,但是沒有二進(jìn)制的輸出格式。所以要想輸出二進(jìn)制,只能靠自己寫函數(shù)進(jìn)行輸出了。
基本思想為通過移位操作+與操作取出各個(gè)位上的值,然后對其進(jìn)行輸出即可。
以32位無符號整型數(shù)據(jù)二進(jìn)制輸出為例,代碼如下:
#include?stdio.h
void?binary_print(unsigned?int?v)
{
int?i;
int?bit;
int?size?=?sizeof(v)*8;
//這里的size是輸入?yún)?shù)v的位數(shù),直接用32代替也可以,但寫成sizeof(v)*8這樣更為通用。
for(i?=?0;?i??size;?i?++)
{
bit?=?v(1(size-i-1));//提取出第i位的值
if(bit?==?0)?putchar('0');
else?putchar('1');
}
}
c語言中沒有二進(jìn)制的格式輸出符號.
你可以用itoa函數(shù)很方便的將一個(gè)10進(jìn)制int轉(zhuǎn)變成二進(jìn)制字符串.
如:
int i;
char s[128];
scanf("%d",i);
itoa(i, s, 2); /*3個(gè)參數(shù),第一個(gè)是待轉(zhuǎn)換的數(shù),第二個(gè)是存放轉(zhuǎn)換后的字符串,第三個(gè)即需要轉(zhuǎn)換的進(jìn)制*/
printf("該數(shù)轉(zhuǎn)換為二進(jìn)制是: [%s]\n",s);
補(bǔ)充一點(diǎn),itoa函數(shù)的頭文件是stdlib.h
(你自己不查以前已經(jīng)有的問題)
c++中負(fù)數(shù)存儲時(shí),不是簡單的將符號位置為1,而是采用補(bǔ)碼的形式存儲的,負(fù)數(shù)最高位為符號位,也就是1,其余全部取反,然后再加1。
假如操作系統(tǒng)是32位,-1的二進(jìn)制存儲不是:1000
0000 0000 0001,而是:1111 1111 1111 1110+1即1111 1111 1111 1111。
擴(kuò)展資料:
C語言面向過程,與C++、Java等面向?qū)ο缶幊陶Z言有所不同。C語言的設(shè)計(jì)目標(biāo)是提供一種能以簡易的方式編譯、處理低級存儲器、僅產(chǎn)生少量的機(jī)器碼以及不需要任何運(yùn)行環(huán)境支持便能運(yùn)行的編程語言。
C語言描述問題比匯編語言迅速、工作量小、可讀性好、易于調(diào)試、修改和移植,而代碼質(zhì)量與匯編語言相當(dāng)。
參考資料來源:百度百科-c語言