【转载】输出二进制 C
想知道怎樣輸出二進制。我們知道C++輸出十六進制是cout〈〈hex〈〈 a;而八進制是cout〈〈 ocx〈〈 a;二進制則沒有默認的輸出格式,需要自己寫函數進行轉換,于是上網搜索了一下。網上思路真是廣泛啊。下面列出一些方法。??
#include 〈iostream〉?
#include 〈list〉?
#include 〈bitset〉?
using namespace std;?
//遞歸輸出二進制函數?
void BinaryRecursion(int n)?
{?
?int a;?
?a=n%2;?
?n=n〉〉1;?
?if (n==0)?
? ;?
?else?
? BinaryRecursion(n);?
?cout〈〈a;?
}?
//使用容器轉換二進制?
void BinaryVector(int n)?
{?
?int temp;?
?temp=n;?
?list〈int〉 L;?
?while(temp!=0)?
?{?
? L.push_front(temp%2);?
? temp=temp〉〉1;?
?}?
?for (list〈int〉::iterator iter=L.begin();iter!=L.end();iter++ )?
? cout〈〈*iter;?
?cout〈〈endl;?
}?
//一般方法,32位,逐步與1做與運算。?
void Binarycout(int n)?
{?
?for (int i=31;i〉=0;i--)?
?{?
? cout〈〈((n〉〉i)&1);?
?}?
?cout〈〈endl;?
}?
//使用bitset轉換二進制?
void BinaryBitset(int n)?
{?
?cout〈〈bitset〈sizeof(int)*8〉(n)〈〈endl;?
}?
int main()?
{?
?int a=1045,b=2;?
?int c;?
?c=a+b;?
?cout〈〈"BinaryRecursion(c):";?
?BinaryRecursion(c);?
?cout〈 BinaryVector(c);?
?cout〈〈"Binarycout(c):";?
?Binarycout(c);?
?cout〈〈"BinaryBitset(c):";?
?BinaryBitset(c);?
?cout〈〈"BinaryChar(c):";?
?BinaryChar(c);?
?//cout〈 return 0;?
}?
運行后的結果如下:?
BinaryRecursion(c):10000010111?
BinaryVector(c):10000010111?
Binarycout(c):00000000000000000000010000010111?
BinaryBitset(c):00000000000000000000010000010111?
BinaryChar(c):10000010111?
Press any key to continue?
從中可以看出,有兩種運算會得出32位的結果,不太好。我對C++還不是很精通,所以這個效率還不是很清楚哪個個好。?
我覺得用容器的可能會好些吧。如果是C,就用字符轉換函數,或者直接除后和1做與運算。
?
#include<stdio.h>
void printb(int,int);
int main()
{
??? int x;
??? printf("Input number:");
??? scanf("%d",&x);
??? printb(x,sizeof(int)*8);
??? putchar('\n');
??? return 0;
}
void printb(int x,int n)
{
??? if(n>0)
??? {
??????? putchar('0'+((unsigned)(x&(1<<(n-1)))>>(n-1)));
??????? printb(x,n-1);
??? }
}
總結
以上是生活随笔為你收集整理的【转载】输出二进制 C的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 老马家的幸福往事剧情介绍
- 下一篇: Android 文件下载的开源框架推荐