拠点と異なる拠点間の変換について
C ++コードで異なる塩基の変換を実現する方法
例として10進数と8進数の合計変換を取り上げます
再帰的方法
#include <iostream>
using namespace std;
int sb(int n)
{
if(n<8)return n;
else
return n%8+10*(sb(n/8));//递归思想关于进制转化
}
int main()
{
int n;
cin>>n; //获取10进制数
cout<<sb(n)<<endl; //利用递归函数
return 0;
}
ループ方式
#include<iostream>
using namespace std;
long long sum=0,b=1,x=1;
int a;
int main()
{
cin>>a;
while(a!=0)
{
sum=sum+(a%8)*x;
a/=8; //a=a/8
x*=10; //x=x/10
}
cout<<sum<<endl;
return 0;
}
10から16進数
10转16进制
#include<iostream>using namespace std;
char exchange(int n)
{
switch(n)
{
case 0: return '0';break;
case 1: return '1';break;
case 2: return '2';break;
case 3: return '3';break;
case 4: return '4';break;
case 5: return '5';break;
case 6: return '6';break;
case 7: return '7';break;
case 8: return '8';break;
case 9: return '9';break;
case 10: return 'A';break;
case 11:return 'B';break;
case 12:return 'C';break;
case 13:return 'D';break;
case 14: return 'E';break;
case 15:return 'F';break;}}
int main(){
int m,note,i=0,s=0;
cin>>m;
note=m;
while(m/16!=0)
{
i++; m=m/16; }
char a[i];
while(note/16!=0)
{
a[s]=exchange(note%16);
s++;
note=note/16; }
a[i]=exchange(note);
for(int j=i;j>=0;j--)
{
cout<<a[j];
}cout<<endl; return 0;}
神と悪魔のための異なる基地があります
ベースの生成は、より良い表現または記録のためでなければなりません。
成績数など、私たちの生活の中で特定の数を表現する場合、そのような数はすべて10進数です。10進数の0、1、2、3、4、5、6、7、8、9が10個あります。
誰もが「10進法」を知っています。人生には他にもシステムがあります。たとえば、分と秒の数は60度、角度は360度です。
コンピューターは2つの状態0、1しか表現できないため、コンピューターではバイナリが使用されます(0はスイッチオフのようなもので、1はスイッチオンとして表現できます)。したがって、コンピュータは2進数のみを「認識」できます。バイナリ「2つごとに1つに入る」。
また、8進数と16進数のシステムがあることをご存知かもしれませんが、なぜバイナリシステムと他のシステムがあるのですか?
人間は10進数を使い、コンピューターは2進数を使うと想像できますが、コンピューターの操作をよりよく研究して理解したい場合、2進数の式や説明を使用することは非常に直感的でなく不便です。バイナリは整数(10進数)などの長すぎるため、32ビットマシンのバイナリは32ビットになります。16進数を使用する場合、必要なのは8桁だけなので、式や説明に非常に便利です。また、10進数ほど複雑ではないため、変換時に直接変換することもできます。(8、16は2の3、4乗であるため)
さまざまな基数表現方法と変換操作
BINバイナリOCTオクタルDEC10進数HEX16進数
10進数から2進数は、短い除算を使用します。
2進数から10進数へのビット重み展開方法:
2進数から8進数:3ビットを1ビットに変換
8進数から2進数へ:1ビットを3ビットに変更
2進数から16進数:4ビットから1ビット
16進数から2進数:1ビットから4ビット
栗をあげる