編程實現進制轉換
① 編程實現:輸入一個十進制數,轉換成對應的二進制數、八進制數和十六進制數並輸出。
1、#include<iostream>
using namespace std;
int main()
{
int a,b,c,d;
cout<<"請輸入待轉換的數:";
cin>>a;
//二進制分別計算每一位
if(a==0)cout<<a;
b=a;c=0;d=1;
while(b!=0)
{
c+=(b%2)*d;//依次把b除以2的余數寫在c的對應位置上
b=b/2;
d*=10;
}
cout<<c<<endl;
//八進制和十六進制使用格式化輸出此擾即可,oct表示八進制,hex表示十六進制
cout<<oct<<a<<endl;
cout<<hex<<a<<endl;
}
2、main()
{ int a,i;char x[16];
float b;
scanf("%d",&a);
printf("八進制為%o,十六進制為%x",a,a);
for(i=0;i<=15;i++)
{b=a/2.0;
a=a/2;
if(b==(float)a) x[15-i]='0';
else x[15-i]='1';
}
printf("二進制為%s",x);
}
(1)編程實現進制轉換擴展閱讀:
編譯方式下,首先通過一個對應於所用程序設計語言的編譯程序對源程序進行處理,經過對源程序的詞法分析、語法分析、語意分析、代碼生成和代碼優化等階段將所處理的森返旦源程序轉換為用二進制代碼表示的目標程序,然後通過連接程序處理將程序中所用的世搏函數調用、系統功能調用等嵌入到目標程序中,構成一個可以連續執行的二進制執行文件。調用這個執行文件就可以實現程序員在對應源程序文件中所指定的相應功能。
② 請用Python語言編程實現由十進制數到二進制數的轉換。
#include <stdio.h>
int main()
{
int a=0,b=0,c=0;
printf("請輸入一個二進制數:");
scanf("%d",&a);//這里我就不對輸入進行檢查了
for(int i=0;;i++)
{
if(a==0)
break;
b=a%2;
a=a/10;
for(int j=i;j>0;j--)
{
if(b==0)
break;
else
b=b*2;
}
c+=b;
}
printf("%d",c);
}
③ c語言編程:怎麼把一個十進制數轉換成為一個十六進制數
第一種:用來糊弄老師的,輸入一個數採用16進制格式輸出
#include <stdio.h>
int main()
{
int num = 0;
scanf("%d", &num);
printf("%x", num);
return 0;
}
第二種:
#include <stdio.h>
#include <string.h>
char oNumTable[6] = {'A', 'B', 'C', 'D', 'E', 'F'};
void dToO(int, char*);
int main()
{
int dNum;
char oNum[100] = {0};
//輸入一個十進制數
scanf("%d", &dNum);
//調用轉換函數,將十進制轉換成以字元串表示的十六進制
dToO(dNum, oNum);
//輸出以字元串表示的16進制數據
printf("%s\n", oNum);
return 0;
}
void dToO(int dNum, char* oNum)
{
char temp[100] = {0};
for (int i = 0; (dNum) && (i < 100) ; i++) {
temp[i] = (dNum % 16);
if (temp[i] > 9) {
temp[i] = oNumTable[temp[i] - 10];
}
else{
temp[i] += '0';
}
dNum /= 16;
}
char* p = temp;
while (*(p+1)) p++;
for (int i = 0; p != temp - 1; i++, p--) {
oNum[i] = *p;
}
}
④ 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。字母不區分大小寫。以下簡介各種進制之間的轉換方法:一、二進制轉換十進制例:二進制「1101100」1101100←二進制數6543210←排位方法例如二進制換算十進制的演算法:1*26+1*25+0*24+1*23+1*22+0*21+0*20↑↑說明:2代表進制,後面的數是次方(從右往左數,以0開始)=64+32+0+8+4+0+0=108二、二進制換算八進制例:二進制的「10110111011」換八進制時,從右到左,三位一組,不夠補0,即成了:010110111011然後每組中的3個數分別對應4、2、1的狀態,然後將為狀態為1的相加,如:010=2110=4+2=6111=4+2+1=7011=2+1=3結果為:2673三、二進制轉換十六進制十六進制換二進制的方法也類似,只要每組4位,分別對應8、4、2、1就行了,如分解為:010110111011運算為:0101=4+1=51011=8+2+1=11(由於10為A,芹敗所以11即B)1011=8+2+1=11(由於10為A,所以11即B)結果為:5BB四、二進制數轉換為十進制數二進制數第0位的權值是2的0次方,第1位的權值是2的1次方……所以,設有一個二進制數:01100100,轉換為10進制為:計算:0*20+0*21+1*22+0*23+0*24+1*25+1*26+0*27=100五、八進制數轉換為十進制數八進制就是逢8進1。八進制數採用0~7這八數來表達一個數。八進制數第0位的權值為8的0次方,第1位權值為8的1次方,第2位權值為8的2次方……所以,設有一個八進制數:1507,轉換為十進制為:計算:7*80+0*81+5*82+1*83=839結果是,八進制數1507轉換成十進制數為839六、十六進制轉換十進制例:2AF5換算成10進制直接計算就是:5*160+F*161+A*162+2*163=10997(別忘了,在上面的計算中,A表示10,而F表示15)、現在可以看出,所有進制換算成10進制,關鍵在於各自的權值不同。假設有人問你,十進數1234為什麼是一千二百三十四?你盡可以給他這么一個算式:1234=1*103+2*102+3*101+4*100十進制與二進制轉換之相互演算法十進制轉二進制:用2輾轉相除至結果為1將余數和最後的1從下向上倒序寫就是結果例如302302/2=151餘0151/2=75餘175/2=37餘137/2=18餘118/2=9餘09/2=4餘14/2=2餘02/2=1餘0故二進制為100101110二進制轉十進制從最後一位開始算,依次列為第0、1、2位第n位的數(0或1)乘以2的n次方得到的結果相加就是答案例如:01101011.轉十進制:第0位:1乘2的0次方=11乘2的1次方=20乘2的2次方=01乘2的3次方=80乘2的4次方=01乘2的5次方=321乘2的6次方=640乘2的7次方=0然後:1+2+0+8+0+32+64+0=107.二進制01101011=十進制107.一、二進制數轉換成十進制數由二進制野首灶數轉換成十進制數的基本做法是,把二進制數頌扮首先寫成加權系數式,然後按十進制加法規則求和。這種做法稱為"按權相加"法。二、十進制數轉換為二進制數十進制數轉換為二進制數時,由於整數和小數的轉換方法不同,所以先將十進制數的整數部分和小數部分分別轉換後,再加以合並。1.十進制整數轉換為二進制整數十進制整數轉換為二進制整數採用"除2取余,逆序排列"法。具體做法是:用2去除十進制整數,可以得到一個商和余數;再用2去除商,又會得到一個商和余數,如此進行,直到商為零時為止,然後把先得到的余數作為二進制數的低位有效位,後得到的余數作為二進制數的高位有效位,依次排列起來。2.十進制小數轉換為二進制小數十進制小數轉換成二進制小數採用"乘2取整,順序排列"法。具體做法是:用2乘十進制小數,可以得到積,將積的整數部分取出,再用2乘餘下的小數部分,又得到一個積,再將積的整數部分取出,如此進行,直到積中的小數部分為零,或者達到所要求的精度為止。然後把取出的整數部分按順序排列起來,先取的整數作為二進制小數的高位有效位,後取的整數作為低位有效位。1.二進制與十進制的轉換(1)二進制轉十進制方法:"按權求和"例:(1011.01)2=(1×23+0×22+1×21+1×20+0×2-1+1×2-2)10=(8+0+2+1+0+0.25)10=(11.25)10(2)十進制轉二進制·十進制整數轉二進制數:"除以2取余,逆序輸出"例:(89)10=(1011001)2289244……1222……0211……025……122……121……00……1·十進制小數轉二進制數:"乘以2取整,順序輸出"例:(0.625)10=(0.101)20.625X21.25X20.5X21.02.八進制與二進制的轉換例:將八進制的37.416轉換成二進制數:37.416011111.100001110即:(37.416)8=(11111.10000111)2例:將二進制的10110.0011轉換成八進制:010110.00110026.14即:(10110.011)2=(26.14)83.十六進制與二進制的轉換例:將十六進制數5DF.9轉換成二進制:5DF.9010111011111.1001即:(5DF.9)16=(10111011111.1001)2例:將二進制數1100001.111轉換成十六進制:01100001.111061.E即:(1100001.111)2=(61.E)16
⑤ c語言二進制八進制十進制16進制怎麼轉換
二進制轉換成八進制數
(1)二進制數轉換成八進制數:對於整數,從低位到高位將二進制數的每三位分為一組,若不夠三位時,在高位左面添0,補足三位,然後將每三位二進制數用一位八進制數替換,小數部分從小數點開始,自左向右每三位一組進行轉換即可完成。例如:
將二進制數1101001轉換成八進制數,則
(001 101 001)2
| | |
( 1 5 1)8
( 1101001)2=(151)8
(2)八進制數轉換成二進制數:只要將每位八進制數用三位二進制數替換,即可完成轉換,例如,把八進制數(643.503)8,轉換成二進制數,則
(6 4 3 . 5 0 3)8
| | | | | |
(110 100 011 . 101 000 011)2
(643.503)8=(110100011.101000011)2
4、二進制與十六進制之間的轉換
(1)二進制數轉換成十六進制數:由於2的4次方=16,所以依照二進制與八進制的轉換方法,將二進制數的每四位用一個十六進制數碼來表示,整數部分以小數點為界點從右往左每四位一組轉換,小數部分從小數點開始自左向右每四位一組進行轉換。
(2)十六進制轉換成二進制數
如將十六進制數轉換成二進制數,只要將每一位十六進制數用四位相應的二進制數表示,即可完成轉換。
例如:將(163.5B)16轉換成二進制數,則
( 1 6 3 . 5 B )16
| | | | |
(0001 0110 0011. 0101 1011 )2
(163.5B)16=(101100011.01011011)2
⑥ 用java編程實現進制轉換,本人初學者,希望大佬給個容易看懂的代碼
importjava.util.Stack;
/**
*author:liujunbao
*date:2020/2/28
*desc:
*/
publicclassTest{
publicstaticvoid納攜main(String[]args){
Integera=300;
Integerb=8;
BinaryConversion(a,b);
}
/**
*
*@parama要轉化的十進制數
*@paramb要轉化的進制
*悉茄沒該方法輸出轉化結果
*/
(Integera,睜納Integerb){
Stackstack=newStack();
while(a!=0){
stack.push(a%b);
a=a/b;
}
while(!stack.empty()){
System.out.print(stack.pop());
}
}
}
⑦ C語言編程:八進制轉換為十進制
#include<stdio.h>
void main()
{
char *p,s[6];int n;
p=s;
gets(p);
n=0;
while(*(p)!='