當前位置:首頁 » 編程語言 » c語言求進制的方法
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言求進制的方法

發布時間: 2022-08-06 09:44:25

c語言中如何實現進制轉換

1、十進制轉換成八進制有兩種方法:
(1)間接法:先將十進制轉換成二進制,然後將二進制又轉換成八進制。
(2)直接法:八進制是由二進制衍生而來的,因此可以採用與十進制轉換為二進制相類似的方法,還是整數部分的轉換和小數部分的轉換,下面來具體講解一下:
①整數部分
方法:除8取余法,即每次將整數部分除以8,余數為該位權上的數,而商繼續除以8,余數又為上一個位權上的數,這個步驟一直持續下去,直到商為0為止,最後讀數時候,從最後一個余數起,一直到最前面的一個余數。
②小數部分
方法:乘8取整法,即將小數部分乘以8,然後取整數部分,剩下的小數部分繼續乘以8,然後取整數部分,剩下的小數部分又乘以8,一直取到小數部分為零為止。如果永遠不能為零,就同十進制數的四捨五入一樣,暫取個名字叫3舍4入。
2、十進制的轉換到十六進制:
十六進制與八進制有很多相似之處,可以參照上面八進制與十進制的轉換實現這兩個進制之間的轉換。

Ⅱ c語言中的二進制,八進制,十進制,十六進制都怎麼算……,可否舉例,謝

先講一下,二進制與十進制。
以10為例,過程如圖。

10進制轉化為二進制
10÷2=5....0(余數為0)
5÷2=2....1(余數為1)
2÷2=1....0
1÷2=0....1

然後,非常重要的一步,將余數倒序相加
即:1010

這里特地說明一下,當被除數比除數小時,余數永遠為它自己。
如:8÷10 余數為8


二進制轉化為十進制

1010
從 右 算起分別對應 :
1 2 4 8
也就是 2的1次方,2次方,3次方
第三步,小數部分怎麼計算呢
如10.1

很簡單,將0.1乘以2
在乘到整數之前,將結果的整數取出。
如:
0.1x2=0.2.....0
0.2x2=0.4.....0
0.4x2=0.8......0
0.8x2=1.6......1
正序排下來: 0001
至於八進制和十六進制,其實是一樣的方法。就是把2換成8。


順便說一下,如果你是要做開發而不是考試的話可以直接用win系統自帶的計算器,選擇「程序員」 模式可以直接得到2.8.10.16進制的所有結果。

Ⅲ C語言的進制是怎樣計算的,最好能舉例子說明,

二進制就是這樣,所有數都是用兩個數來表示1和0,10就制就是到10升一位,2進制就是到2升一位,0=0
1=1
2=10(到2要升位),3=11,4=100,5=101,6=110,7=111,
1
2
3
4
5
6
7
這組數依次疊加,換成二進制就也是一組從1開始的依次疊加數字,1
10
11
100
101
110
111,小數字可以用心算換出來,數值太大了就得用公式來轉換,樓上有寫

Ⅳ C語言中八進制和16進制怎麼表示

一、八進制由 0~7 八個數字組成,使用時必須以0開頭(注意是數字 0,不是字母 o),例如:

//合法的八進制數

int a = 015; //換算成十進制為 13

int b = -0101; //換算成十進制為 -65

int c = 0177777; //換算成十進制為 65535

//非法的八進制

int m = 256; //無前綴 0,相當於十進制

int n = 03A2; //A不是有效的八進制數字

二、十六進制由數字 0~9、字母 A~F 或 a~f(不區分大小寫)組成,使用時必須以0x或0X(不區分大小寫)開頭,例如:

//合法的十六進制int a = 0X2A; //換算成十進制為 42

int b = -0XA0; //換算成十進制為 -160

int c = 0xffff; //換算成十進制為 65535

//非法的十六進制

int m = 5A; //沒有前綴 0X,是一個無效數字

int n = 0X3H; //H不是有效的十六進制數字

二進制化為八進制

整數部份從最低有效位開始,以3位一組,最高有效位不足3位時以0補齊,每一組均可轉換成一個八進制的值,轉換完畢就是八進制的整數。

小數部份從最高有效位開始,以3位一組,最低有效位不足3位時以0補齊,每一組均可轉換成一個八進制的值,轉換完畢就是八進制的小數。

例:(11001111.01111)2 = (011 001 111.011 110)2 = (317.36)8

以上內容參考:網路-八進制

Ⅳ c語言中各種進制的轉換規矩 詳細些 最好是計算過程寫出來

代碼如下:(可以輸出20位數)#include<stdio.h>
void transfer(int m,int change)
{
int aa[20],j,saveM=m;
for(j=0;m!=0;j++)
{
aa[j]=m%change;
m=m/change;
}
printf("十進制數%d的%d進制形式是:\n",saveM,change);
for(;j!=0;j--)
printf("%d ",aa[j-1]); //注意這空是填aa[j-1],而不是aa[j],因為上面那個循環進行到最後一步時,j++還是會運行一次,但是此時並沒有給aa[j]賦值,因為循環結束
}
main()
{
int n,c;
printf("請輸入一個整數\n");
scanf("%d",&n);
printf("該整數是十進制數,你想將它轉化成幾進制數呢?\n");
getchar();
scanf("%d",&c);
transfer(n,c);
} 功能說明:該函數可以將任意的十進制數轉化成任意的N進制數。轉化後的結果,每兩位數之間用一個空格隔開。
希望可以幫到您,謝謝!

Ⅵ C語言中的各進制的轉換方法

C++的,如果要TC的將中文改為English就行了
#include<stdio.h>
#include<math.h>

void ten_two()
{
int num, i;
int arr[20];
printf("請輸入一個十進制數:");
scanf("%d",&num);

for( i = 0 ; 1 ; i++)
{ //轉換為二進制並存入數組
arr[i] = num % 2;
num = num / 2;
if(num == 0)
{
break;
}
}
printf("轉換為二進制:"); //列印
for(; i >= 0 ; i-- ){
printf("%d",arr[i]);
}
printf("\n");
}

void ten_eight()
{
int num, i;
int arr[20];
printf("請輸入一個十進制數:");
scanf("%d",&num);
for( i = 0 ; 1 ; i++){//轉換為八進制並存入數組
arr[i] = num % 8;
num = num / 8;
if(num == 0){
break;
}
}
printf("轉換為八進制:"); //列印
for(; i >= 0 ; i-- ){
printf("%d",arr[i]);
}
printf("\n");
}

void ten_sixteen()
{
int num, i;
int arr[20];
printf("請輸入一個十進制數:");
scanf("%d",&num);
for( i = 0 ; 1 ; i++){ //轉換為二進制並存入數組
arr[i] = num % 16;
num = num / 16;
if(num == 0){
break;
}
}
printf("轉換為十六進制:"); //列印
for(; i >= 0 ; i-- ){
switch(arr[i]){
case 10 : printf("A");break;
case 11 :printf("B");break;
case 12 :printf("C");break;
case 13 :printf("D");break;
case 14 :printf("E");break;
case 15 :printf("F");break;
default :printf("%d",arr[i]);
}
}
printf("\n");
}

void two_ten()
{
long num;
int b,TheTen=0,Total=0;
printf("請輸入一個二進制數(只包含0或1):");
scanf("%ld",&num);
while(num)
{
b=num-(int)(num/10)*10;
TheTen+=b*pow(2,Total);;
Total++;
num=(int)(num/10);
}
printf("轉換為十進制:"); //列印
printf("%d",TheTen);
printf("\n");
}

void eight_ten()
{
int num, i;
int arr[20];
printf("請輸入一個八進制數(只由0~7之前的數組成):");
scanf("%o",&num);

printf("轉換為十進制:"); //列印
printf("%d",num);
printf("\n");
}
void sixteen_ten()
{
int num, i;
int arr[20];
printf("請輸入一個十六進制數(只由0~9和A~F之前的數組成):");
scanf("%X",&num);

printf("轉換為十進制:"); //列印
printf("%d",num);
printf("\n");
}

void main()
{
int select;
do{
printf("0 - 退出,1 - 十進制轉二進制,2 - 十進制轉八進制,3 - 十進制轉十六進制,4 - 二進制轉十進制,5 - 八進制轉十進制,6 - 十六進制轉十進制\n");
scanf("%d",&select);
switch(select){
case 1 : ten_two(); break; //十進制轉二進制
case 2 : ten_eight(); break; //十進制轉八進制
case 3 : ten_sixteen(); break; //十進制轉十六進制
case 4 : two_ten(); break; //二進制轉十進制
case 5 : eight_ten(); break; //八進制轉十進制
case 6 : sixteen_ten(); break; //六十進制轉十進制
default : printf("您的輸入有誤,請重新輸入!"); break;
}
if(select == 0)
{break;}
}while(1);
}

Ⅶ C語言中的進制怎麼轉換啊

關於進制轉換,我覺得挺好玩的不就是幾個公式吧了,
就如我第一次所學的二進制轉換為十進制,十進制轉換為二進制,那樣的類型其實也挺有趣的
比如:一個二進制數轉化為十進制數,如哦我所給的一個二進制數「101101001」我就設十進制數是Z
首先有個公式可套:Z=1*X8+0*X7+1*X6+1*X5+0*X4+1*X3+0*X2+0*X1+1*X0
把只是X換為2,算出來的就是你所得到的此二進制數所對應的十進制數
同理:如八進制數轉換為十進制數就是把X換為8,十六進制數轉換十進制數把X換為16,
至於二進制數轉化為八進制數更有意思;
首先我引進一個例子:這是一個比較特殊的二進制數:111111111111
首先把這組數按三個數劃分一組(從右開始劃分):如,111,111,111,111 於是結果是7777
然後就分別把化為各組的數組轉化為是進制數,最後進把你剛才算出的數按原來的順序排起來,於是得到的結果就是你想要的
那十六進制就是把數組中的每四個劃分一組(從右開始劃分的)
如111111111111劃分結果為1111,1111,1111, 方法與上面一樣,於是它的結果是fff

關於十進制轉化二進制,八進制和十六進制,方法都是一樣的
同二進制方法雷同。

Ⅷ C語言進制轉換

計算機中常用的數的進制主要有:二進制、八進制、十進制、十六進制。  

2進制,用兩個阿拉伯數字:0、1;  

8進制,用八個阿拉伯數字:0、1、2、3、4、5、6、7;  

10進制,用十個阿拉伯數字:0到9;  

16進制就是逢16進1,但我們只有0~9這十個數字,所以我們用A,B,C,D,E,F這五個字母來分別表示10,11,12,13,14,15。字母不區分大小寫。 

下面用余數短除法把十進制數轉化為二進制數為例進行說明

1、明確問題。舉個例子,我們現在是要將一個十進制數字156轉換成二進制數字。先將這個十進制數作為被除數寫在一個倒著的「長除法」的符號里。把目標數系的基數(在這里二進制是「2」)作為除數寫在這個除法符號的外面。用這個方法將計算過程可視化會更方便理解,因為整個計算過程只需將數字一直除以2。

活用這個方法可以將所有十進制數字轉換成任何進製表達。除數為2是因為我們最終想得到的以2為基數的數(即二進制數值) 。如果最終想得到其他數系的數字,用目標數系的基數代替這個方法里二進制的基數2 就可以了。例如,要得到基數為9的數,就用9來代替2作為除數 。最終的結果就是目標數系的數字表達。

(8)c語言求進制的方法擴展閱讀:

十進制--->二進制

對於整數部分,用被除數反復除以2,除第一次外,每次除以2均取前一次商的整數部分作被除數並依次記下每次的余數。另外,所得到的商的最後一位余數是所求二進制數的最高位。

對於小數部分,採用連續乘以基數2,並依次取出的整數部分,直至結果的小數部分為0為止。故該法稱「乘基取整法」

十進制--->八進制

10進制數轉換成8進制的方法,和轉換為2進制的方法類似,唯一變化:除數由2變成8。

Ⅸ C語言進制計算

這個其實你要先弄明白是幾進制換成幾進制,這里全是8進制轉換為十進制的:
015
換為2進制:001101
換成十進制:2^3+2^2+2^0=8+4+1=13
0101
換為2進制001000001
換成十進制:2^6+2^0=64+1=65
177777
換成2進制001111111111111111
換成十進制2^15+2^14+2^13+2^12+2^11+2^10+2^9+2^8+2^7+2^6+2^5+2^4+2^3
+2^2+2^1+2^0=32768+16384+8192+4096+2048+1024+512+256+128+64+32+16+8+4+2+1=65535

Ⅹ C語言裡面的進制換算方法

我舉例說明把:

二進制
基數:2
數碼:0、1
1011.01按權展開式
1*2^3+0*2^2+1*2^1+1*2^0+0*2^-1+1*2^-2=11.25

(123)8=1*8^2+2*8^1+3*8^0=83

(AFF)16=10*16^2+15*16^1+15*16^0=

(XY)N=X*N^1+Y*N^0

N轉十:按權展開式
十轉N:除N取余

十六轉二:每個位轉成4位二進制數
八轉二:每個位轉成3位二進制數
二轉十六:從右往左,每4位劃分成一個十六進制數位。高位如果不夠4位,補0.
二轉八:從右往左,每3位劃分成一個八進制數位。高位如果不夠3位,補0

記住
都是按8421碼轉換的!

樓主認為好的話就採納一下吧!你是學c程序的嗎??是的話可以進我的群123247317(計算機軟體技術)