用編譯器轉換十進制數
.二進制與十進制的轉換
(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)2
2
89
2
44
……
1
2
22
……
0
2
11
……
0
2
5
……
1
2
2
……
1
2
1
……
0
0
……
1
·
十進制小數轉二進制數:"乘以2取整,順序輸出"
例:
(0.625)10=
(0.101)2
0.625
X
2
1.25
X
2
0.5
X
2
1.0
2.八進制與二進制的轉換
例:將八進制的37.416轉換成二進制數:
37
.
4
1
6
011
111
.100
001
110
即:(37.416)8
=(11111.10000111)2
例:將二進制的10110.0011
轉換成八進制:
0
1
0
1
1
0
.
0
0
1
1
0
0
2
6
.
1
4
即:(10110.011)2
=(26.14)8
3.十六進制與二進制的轉換
例:將十六進制數5DF.9
轉換成二進制:
5
D
F
.
9
0101
1101
1111.1001
即:(5DF.9)16
=(10111011111.1001)2
例:將二進制數1100001.111
轉換成十六進制:
0110
0001
.
1110
6
1
.
E
即:(1100001.111)2
=(61.E)16
參考資料:http://222.214.195.26/aoshai/szzh.htm
『貳』 C語言 二進制數轉化為十進制數
思路:十進制整數轉換為二進制整數採用"除2取余,逆序排列"法。即用2整除十進制整數,可以得到一個商和余數;再用2去除商,又會得到一個商和余數,如此進行,直到商為0時為止,然後把先得到的余數作為二進制數的低位有效位,後得到的余數作為二進制數的高位有效位,依次排列起來。
參考代碼:
#include"stdio.h"
voidfun(intn){
if(n==0)return;
fun(n/2);
printf("%d",n%2);
}
intmain(){
intn;
scanf("%d",&n);
fun(n);
return0;
}
/*
運行結果:例如求10的2進制
10
1010
*/
『叄』 如何用C語言將一個十六進制數字轉換為十進制
需要准備的材料分別有:電腦、C語言編譯器。
1、首先,打開C語言編譯器,新建一個初始.cpp文件,例如:test.cpp。
『肆』 用匯編語言將32位16進制數轉換成10進制數,怎麼辦
思路:
把十六進制(比如4位)數除以10000d(十進制數,因為十進制最大是5位--65535)
如果二位十六進制數就除以100d(因為十進制最大是三位--255)
商就是十進制的最高位
再把余數除以1000d
商就是十進制的次高位
再把余數除以100d
...
除以10d
....
除以1d
...以此類推
就得到十進制數
下面是四位十六進制數轉為十進制代碼:
code segment
main proc far
assume cs:code
start:
call hexibin ;16-2
call crlf ;換行
call binidec ;2-10
call crlf
jmp main ;get next input
ret
main endp
hexibin proc near
mov bx,0 ;clear BX for number
newchar:
mov ah,01h ;keyboard input
int 21h ;call DOS
sub al,30h ;ASCII to binary
jl exit ;jump if<0
cmp al,10d ;is it > 9d
jl add_to ;yes,so it's digit
;not digit(0-9),may be letter(a to f)
sub al,27h ;convert ASCII to binary
cmp al,0ah ;is it <0a hex?
jl exit ;yes,not letter
cmp al,10h ;is it > 0f hex?
jge exit ;yes,not letter
;is hex digit,add to number in BX
add_to:
mov cl,4
shl bx,cl
mov ah,0
add bx,ax
jmp newchar
exit:
ret
hexibin endp
binidec proc near
mov cx,10000d
call dec_div
mov cx,1000d
call dec_div
mov cx,100d
call dec_div
mov cx,10d
call dec_div
mov cx,1d
call dec_div
ret
dec_div proc near
mov ax,bx ;number low half
mov dx,0 ;zero out high half
div cx
mov bx,dx ;remainder into BX
mov dl,al ;quotient into DL
;print the contents of DL on screen
add dl,30h ;convert to ASCII
mov ah,02h
int 21h
ret
dec_div endp
binidec endp
crlf proc near
mov dl,0ah
mov ah,02h
int 21h
mov dl,0dh
mov ah,02h
int 21h
ret
crlf endp
code ends
end start
『伍』 用C語言編寫二進制轉換十進制的程序。
1、為了完成進制的轉換,在主函數中聲明了個函數Sum,主要用於將二進制的每一位轉換為十進制後的數相加,返回值就是相加後的和。另外定義了一個數組array[8],用於存放輸入的八位二進制數。
『陸』 C語言如何實現十六進制轉換成十進制
C語言實現十六進制轉換成十進制如下:
例如將十六進制數字 9FA8C 轉換成十進制:
9FA8C = 9×164 + 15×163 + 10×162 + 8×161 + 12×160 = 653964(十進制)。
從右往左看,第1位的位權為 160=1,第2位的位權為 161=16,第3位的位權為 162=256,第4位的位權為 163=4096,第5位的位權為 164=65536 …… 第n位的位權就為 16n-1。
將各個位的數字乘以位權,然後再相加,就得到了十進制形式。
十六進制數的第0位的權值為16的0次方,第1位的權值為16的1次方,第2位的權值為16的2次方。
所以,在第N(N從0開始)位上,如果是是數 X (X 大於等於0,並且X小於等於 15,即:F)表示的大小為 X * 16的N次方。
再例如:十六進制:EA7 = 14×162 + 10×161 + 7×160 = 3751(十進制)。
(6)用編譯器轉換十進制數擴展閱讀:
C語言10進制轉16進制
把十進制的數不停除以16的余數按從右到左的順序排起來就是16進制,例如:55/16=0餘5例如100 100/16=6餘4 6/16餘6,所以就是64,再例如1000 1000/16=62餘8 62/16=3餘12 3/16餘3所以結果是3C8 //。
對於整數部分,用被除數反復除以2,除第一次外,每次除以2均取前一次商的整數部分作被除數並依次記下每次的余數。另外,所得到的商的最後一位余數是所求二進制數的最高位。
對於小數部分,採用連續乘以基數2,並依次取出的整數部分,直至結果的小數部分為0為止。
『柒』 16進制數怎麼轉換成10進制的
不是。
以Windows編譯器為例:0x表示該數為16進制。
各進制的表示法:
二進制:00001111
十進制:15
十六進制:0x0F
進制轉換公式:參考8421BCD碼轉換公式。
如:00001111=0x2^7+0x2^6+0x2^5+0x2^4+1x2^3+1x2^2+1x2^1+1x2^0=15
0x0F = 0x16^1+15x16^0 = 15
『捌』 c語言把二進制數轉換成十進制數的程序怎麼寫。
需要准備的材料分別有:電腦、C語言編譯器。
1、首先,打開C語言編譯器,新建一個初始.cpp文件,例如:test.cpp。
『玖』 計算機底層如何對十進制進行轉換比如(123)
在計算機中,一般都是以二進制的形式存儲數據。你開始定義的「123」是十進制的。把它轉換為二進制的才能存儲於計算機中。「123」轉換為二進制代碼是01111011(這是8位的存儲器)。編譯器通過對十進制的數進行除2得到余數,逆取余數就得到二進制數。在硬體具體實現的時候主要是通過不同的晶元實現除法、取余等操作。
『拾』 c語言如何把一個字元串格式的二進制數轉化為整數型的十進制數
首先要說,在計算機裡面不存在十進制數。我們看到的輸出的十進制數,其實是C編譯器把真正的二進制數的數值以十進制形式顯示在屏幕上。如果說計算機裡面有十進制數的話,那麼BCD數可以算是一種形式的十進制數。
而題目中的字元串格式的二進制數,也就是一串的'0','1'字元;轉化為整數型其實就是求得其實際數值,最後以十進制形式輸出。
#include <stdio.h>
int main()
{
long int m;
char c0[50],*c ;
while(scanf("%s",c0)!=EOF){
m = 0;c=c0;
while(*c)
m += (m + *(c++)-'0');
printf("%d\n",m);
}
return 0;
}