任意進製數之間相互轉換

2021-03-09 05:00:27 字數 1827 閱讀 4092

1樓:匿名使用者

a進製數x在b進製下數值為y

x每位a進製數字分別在b進製下表示為b0,b1,b2,b3,...(整數部分),b(-1),b(-2),b(-3),...

a進製數10在b進製下值為p

公式為y=b0*p^0+b1*p^1+b2*p^2+b3*p^3+...+b(-1)*p^(-1)+b(-2)*p^(-2)+b(-3)*p^(-3)+...

二進位制八進位制十六進製制之間相互轉換的方法

由於8,16是與2是指數關係,轉換方法簡單一些以小數點為界,二進位制每3個數字一組表示乙個八進位制數,二進位制每4個數字一組表示乙個十六進製制數。這樣就簡化了公式:首先分組按照公式轉換,再把得到的數排列在一起。

如:101110010101.101(二)=1011 1001 0101.1010(二)=b95.a(十六)

7af.8e(十六)

=0111 1010 1111.1000 1110(二)=011 110 101 111.100 011 100(二)=3657.434(八)

十進位制和二進位制八進位制十六進製制則可以採用

除2/8/16取餘法(不另說明)

還可用公式

例子198

=128+64+4+2

=10000000(二)

+ 1000000(二)

+ 100(二)

+ 10(二)

=11000110(二)

2樓:匿名使用者

乙個八進位制等於三位二進位制、乙個十六進製制等於四位二進位制。直接數字數!

用vc語言程式設計實現2-16進製制內任意進製之間的轉換。謝謝大神。

3樓:匿名使用者

||#include

#include

#include

int readnumber(char* input, int base)

if (base < 2 || base > 16)

int number = 0;

for (int i = 0; i < inputlength; i++)

else if (c >= 'a' && c <= 'f')

else if (c >= 'a' && c <= 'f')

else

if (d >= base)

number *= base;

number += d;

if (number < 0)

}return number;

}char* writenumber(int number, int base)

char buffer[128];

int index = 127;

buffer[index--] = 0;

doint d = number % base;

number /= base;

if (d <= 9)

else

} while (number != 0);

index++;

int outputlength = strlen(buffer + index);

char* output = (char*) malloc(outputlength + 1);

memcpy(output, buffer + index, outputlength + 1);

return output;

}void main()

else

else

}rewind(stdin);

printf("\n按回車鍵退出\n");

getchar();}

十進位制與其他進製相互轉換方法,十進位制與其他進製相互轉換方法?

1.十進位制轉換為二進位制 除二取餘法 89 10 1011001 2 89 2 44 餘 1 44 2 22 餘 0 22 2 11 餘 0 11 2 5 餘 1 5 2 4 餘 1 4 2 2 餘 0 2 2 1 2.十進位制轉換為八進位制 假設十進位制數為1000,則八進位制數字1750,過程...

10進製的數如何直接轉換成8進製的數

十轉八進位制。如轉為八進位制。整數部分 然後我們將餘數按從下往上的順序書寫就是 31,那麼這個31就是十進位制25的八進位制形式。小數部分 然後我們將整數部分按從上往下的順序書寫就是 5,那麼這個就是十進位制的八進位制形式。所以 十 八 八。十。用十進位制的數值除以8,餘數為八進位制的個位。例 十進...

80座標和54座標相互轉換的引數

貌似沒有什麼辦法,必須有同乙個點的兩套座標系的座標,而且要有3個才能算出準確的7引數。北京54的長半徑是6378245,偏率是1 298.3。西安80的長半徑是6378140,偏率是1 298.257。他們兩個座標系 的轉回換要有兩個以上公共點答才可以計算出轉換引數。可以用三引數,四引數,要精確的話...