2進10的換算進制_第1頁
2進10的換算進制_第2頁
2進10的換算進制_第3頁
2進10的換算進制_第4頁
2進10的換算進制_第5頁
已閱讀5頁,還剩8頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、進制轉(zhuǎn)換求助編輯百科名片   十進制小數(shù)轉(zhuǎn)換成二進制小數(shù)進制轉(zhuǎn)換是人們利用符號來計數(shù)的方法,包含很多種數(shù)字轉(zhuǎn)換。進制轉(zhuǎn)換由一組數(shù)碼符號和兩個基本因素(“基”與“權(quán)”)構(gòu)成。目錄一、正數(shù) 1. 1. 十 -> 二 2. 2. 二 -> 十 3. 3. 十 -> 八 4. 4. 八 -> 十 5. 5. 十 -> 十六 6. 6. 十六-> 十 7. 7. 二 -> 八 8. 8. 八 -> 二 9. 9. 十六 -> 二 ;二 -> 十六 二、負數(shù) C程序代碼:(支持負進制) Java代碼 展開 一、正數(shù) 1. 1.

2、 十 -> 二 2. 2. 二 -> 十 3. 3. 十 -> 八 4. 4. 八 -> 十 5. 5. 十 -> 十六 6. 6. 十六-> 十 7. 7. 二 -> 八 8. 8. 八 -> 二 9. 9. 十六 -> 二 ;二 -> 十六 二、負數(shù) C程序代碼:(支持負進制) Java代碼 展開    編輯本段一、正數(shù)在高速發(fā)展的現(xiàn)代社會,計算機浩浩蕩蕩地成為了人們生活中不可缺少的一部分,幫助人們解決通信,聯(lián)絡(luò),互動等各方面的問題。今天我就給大家講講與計算機甚至日常生活有密切相關(guān)的“進制轉(zhuǎn)換”問題。 我們以(

3、25.625)(十)為例講解一下進制之間的轉(zhuǎn)化問題。 1. 十 -> 二給你一個十進制,比如:6,如果將它轉(zhuǎn)換成二進制數(shù)呢? 10進制數(shù)轉(zhuǎn)換成二進制數(shù),這是一個連續(xù)除以2的過程: 把要轉(zhuǎn)換的數(shù),除以2,得到商和余數(shù), 將商繼續(xù)除以2,直到商為0。最后將所有余數(shù)倒序排列,得到數(shù)就是轉(zhuǎn)換結(jié)果。 聽起來有些糊涂?我們結(jié)合例子來說明。比如要轉(zhuǎn)換6為二進制數(shù)。 “把要轉(zhuǎn)換的數(shù),除以2,得到商和余數(shù)”。 那么:    十轉(zhuǎn)二示意圖要轉(zhuǎn)換的數(shù)是6, 6 ÷ 2,得到商是3,余數(shù)是0。 “將商繼續(xù)除以2,直到商為0” 現(xiàn)在商是3,還不是0,所以繼續(xù)除以2。 那就: 3 &#

4、247; 2, 得到商是1,余數(shù)是1。 “將商繼續(xù)除以2,直到商為0” 現(xiàn)在商是1,還不是0,所以繼續(xù)除以2。 那就: 1 ÷ 2, 得到商是0,余數(shù)是1 “將商繼續(xù)除以2,直到商為0最后將所有余數(shù)倒序排列” 好極!現(xiàn)在商已經(jīng)是0。 我們?nèi)斡嬎阋来蔚玫接鄶?shù)分別是:0、1、1,將所有余數(shù)倒序排列,那就是:110了! 6轉(zhuǎn)換成二進制,結(jié)果是110。 把上面的一段改成用表格來表示,則為: 被除數(shù) 計算過程 商 余數(shù) 6 6/2 3 0 3 3/2 1 1 1 1/2 0 1 (在計算機中,÷用 / 來表示) 2. 二 -> 十二進制數(shù)轉(zhuǎn)換為十進制數(shù) 二進制數(shù)第0位的權(quán)值是

5、2的0次方,第1位的權(quán)值是2的1次方 所以,設(shè)有一個二進制數(shù):0110 0100,轉(zhuǎn)換為10進制為: 下面是豎式: 0110 0100 換算成 十進制 " " 為次方 第0位 0 * 20 = 0 第1位 0 * 21 = 0 第2位 1 * 22 = 4 第3位 0 * 23 = 0 第4位 0 * 24 = 0 第5位 1 * 25 = 32 第6位 1 * 26 = 64 第7位 0 * 27 = 0 + 公式:第N位2(N) - 100 用橫式計算為: 0 * 2 0 + 0 * 2 1 + 1 * 2 2 + 0 * 2 3 + 0 * 2 4 + 1 * 2 5

6、 + 1 * 2 6 + 0 * 2 7 = 100 0乘以多少都是0,所以我們也可以直接跳過值為0的位: 1 * 2 2 + 1 * 2 5 + 1 * 2 6 = 100 3. 十 -> 八10進制數(shù)轉(zhuǎn)換成8進制的方法,和轉(zhuǎn)換為2進制的方法類似,唯一變化:除數(shù)由2變成8。 來看一個例子,如何將十進制數(shù)120轉(zhuǎn)換成八進制數(shù)。 用表格表示: 被除數(shù) 計算過程 商 余數(shù) 120 120/8 15 0 15 15/8 1 7 1 1/8 0 1 120轉(zhuǎn)換為8進制,結(jié)果為:170。 4. 八 -> 十八進制就是逢8進1。 八進制數(shù)采用 07這八數(shù)來表達一個數(shù)。 八進制數(shù)第0位的權(quán)值為8

7、的0次方,第1位權(quán)值為8的1次方,第2位權(quán)值為8的2次方 所以,設(shè)有一個八進制數(shù):1507,轉(zhuǎn)換為十進制為: 用豎式表示: 1507換算成十進制。 第0位 7 * 80 = 7 第1位 0 * 81 = 0 第2位 5 * 82 = 320 第3位 1 * 83 = 512 - 839 同樣,我們也可以用橫式直接計算: 7 * 80 + 0 * 81 + 5 * 82 + 1 * 83 = 839 結(jié)果是,八進制數(shù) 1507 轉(zhuǎn)換成十進制數(shù)為 839 5. 十 -> 十六10進制數(shù)轉(zhuǎn)換成16進制的方法,和轉(zhuǎn)換為2進制的方法類似,唯一變化:除數(shù)由2變成16。 同樣是120,轉(zhuǎn)換成16進制則

8、為: 被除數(shù) 計算過程 商 余數(shù) 120 120/16 7 8 7 7/16 0 7 120轉(zhuǎn)換為16進制,結(jié)果為:78。 6. 十六-> 十16進制就是逢16進1,但我們只有09這十個數(shù)字,所以我們用A,B,C,D,E,F(xiàn)這六個字母來分別表示10,11,12,13,14,15。字母不區(qū)分大小寫。 十六進制數(shù)的第0位的權(quán)值為16的0次方,第1位的權(quán)值為16的1次方,第2位的權(quán)值為16的2次方 所以,在第N(N從0開始)位上,如果是是數(shù) X (X 大于等于0,并且X小于等于 15,即:F)表示的大小為 X * 16的N次方。 假設(shè)有一個十六進數(shù) 2AF5, 那么如何換算成10進制呢? 用豎

9、式計算: 2AF5換算成10進制: 第0位: 5 * 160 = 5 第1位: F * 161 = 240 第2位: A * 162 = 2560 第3位: 2 * 163 = 8192 + - 10997 直接計算就是: 5 * 160 + F * 161 + A * 162 + 2 * 163 = 10997 (別忘了,在上面的計算中,A表示10,而F表示15) 現(xiàn)在可以看出,所有進制換算成10進制,關(guān)鍵在于各自的權(quán)值不同。 假設(shè)有人問你,十進數(shù) 1234 為什么是 一千二百三十四?你盡可以給他這么一個算式: 1234 = 1 * 103 + 2 * 102 + 3 * 101 + 4 *

10、 100 7. 二 -> 八(11001.101)(二) 整數(shù)部分: 從后往前每三位一組,缺位處用0填補,然后按十進制方法進行轉(zhuǎn)化, 則有: 001=1 011=3 然后我們將結(jié)果按從下往上的順序書寫就是:31,那么這個31就是二進制11001的八進制形式 小數(shù)部分: 從前往后每三位一組,缺位處用0填補,然后按十進制方法進行轉(zhuǎn)化, 則有: 101=5 然后我們將結(jié)果部分按從上往下的順序書寫就是:5,那么這個5就是二進制0.101的八進制形式 小數(shù)部分 所以:(11001.101)(二)=(31.5)(八) 8. 八 -> 二(31.5)(八) 整數(shù)部分:從后往前每一位按十進制轉(zhuǎn)化方

11、式轉(zhuǎn)化為三位二進制數(shù),缺位處用0補充 則有: 1->1->001 3->11 然后我們將結(jié)果按從下往上的順序書寫就是:11001,那么這個11001就是八進制31的二進制形式 說明,關(guān)于十進制的轉(zhuǎn)化方式我這里就不再說了,上一篇文章我已經(jīng)講解了! 小數(shù)部分:從前往后每一位按十進制轉(zhuǎn)化方式轉(zhuǎn)化為三位二進制數(shù),缺位處用0補充 則有: 5->101 然后我們將結(jié)果按從下往上的順序書寫就是:101,那么這個101就是八進制5的二進制形式 所以:(31.5)(八)=(11001.101)(二) 9. 十六 -> 二 ;二 -> 十六二進制和十六進制的互相轉(zhuǎn)換比較重要。不

12、過這二者的轉(zhuǎn)換卻不用計算,每個C,C+程序員都能做到看見二進制數(shù),直接就能轉(zhuǎn)換為十六進制數(shù),反之亦然。 我們也一樣,只要學完這一小節(jié),就能做到。 首先我們來看一個二進制數(shù):1111,它是多少呢? 你可能還要這樣計算:1 * 20 + 1 * 21 + 1 * 22 + 1 * 23 = 1 * 1 + 1 * 2 + 1 * 4 + 1 * 8 = 15。 然而,由于1111才4位,所以我們必須直接記住它每一位的權(quán)值,并且是從高位往低位記,:8、4、2、1。即,最高位的權(quán)值為23 = 8,然后依次是 22 = 4,21=2, 20 = 1。 記住8421,對于任意一個4位的二進制數(shù),我們都可以

13、很快算出它對應(yīng)的10進制值。 下面列出四位二進制數(shù)xxxx 所有可能的值(中間略過部分) 僅4位的2進制數(shù) 快速計算方法 十進制值 十六進值 1111 = 8 + 4 + 2 + 1 = 15 F 1110 = 8 + 4 + 2 + 0 = 14 E 1101 = 8 + 4 + 0 + 1 = 13 D 1100 = 8 + 4 + 0 + 0 = 12 C 1011 = 8 + 0 + 2+ 1 = 11 B 1010 = 8 + 0 + 2 + 0 = 10 A 1001 = 8 + 0 + 0 + 1 = 9 9 . 0001 = 0 + 0 + 0 + 1 = 1 1 0000 =

14、 0 + 0 + 0 + 0 = 0 0 二進制數(shù)要轉(zhuǎn)換為十六進制,就是以4位一段,分別轉(zhuǎn)換為十六進制。 如(上行為二制數(shù),下面為對應(yīng)的十六進制): 1111 1101 , 1010 0101 , 1001 1011 F D , A 5 , 9 B 反過來,當我們看到 FD時,如何迅速將它轉(zhuǎn)換為二進制數(shù)呢? 先轉(zhuǎn)換F: 看到F,我們需知道它是15(可能你還不熟悉AF這五個數(shù)),然后15如何用8421湊呢?應(yīng)該是8 + 4 + 2 + 1,所以四位全為1 :1111。 接著轉(zhuǎn)換 D: 看到D,知道它是13,13如何用8421湊呢?應(yīng)該是:8 + 4 + 1,即:1101。 所以,FD轉(zhuǎn)換為二進制

15、數(shù),為: 1111 1101 由于十六進制轉(zhuǎn)換成二進制相當直接,所以,我們需要將一個十進制數(shù)轉(zhuǎn)換成2進制數(shù)時,也可以先轉(zhuǎn)換成16進制,然后再轉(zhuǎn)換成2進制。 比如,十進制數(shù) 1234轉(zhuǎn)換成二制數(shù),如果要一直除以2,直接得到2進制數(shù),需要計算較多次數(shù)。所以我們可以先除以16,得到16進制數(shù): 被除數(shù) 計算過程 商 余數(shù) 1234 1234/16 77 2 77 77/16 4 13 (D) 4 4/16 0 4 結(jié)果16進制為: 0x4D2 然后我們可直接寫出0x4D2的二進制形式: 0100 1101 0010。 其中對映關(guān)系為: 0100 - 4 1101 - D 0010 - 2 同樣,如果

16、一個二進制數(shù)很長,我們需要將它轉(zhuǎn)換成10進制數(shù)時,除了前面學過的方法是,我們還可以先將這個二進制轉(zhuǎn)換成16進制,然后再轉(zhuǎn)換為10進制。 下面舉例一個int類型的二進制數(shù): 01101101 11100101 10101111 00011011 我們按四位一組轉(zhuǎn)換為16進制: 6D E5 AF 1B 再轉(zhuǎn)換為10進制:6*167+D*166+E*165+5*164+A*163+F*162+1*161+B*160=1,843,769,115 編輯本段二、負數(shù)負數(shù)的進制轉(zhuǎn)換稍微有些不同。 先把負數(shù)寫為其補碼形式(在此不議),然后再根據(jù)二進制轉(zhuǎn)換其它進制的方法進行。 例:要求把-9轉(zhuǎn)換為八進制形式。則

17、有: -9的補碼為1111 1111 1111 0111。從后往前三位一劃,不足三位的加0 111->7 110->6 111->7 111->7 111->7 001->1 然后我們將結(jié)果按從下往上的順序書寫就是:177767,那么177767就是十進制數(shù)-9的八進制形式。 補充: 最近有些朋友提了這樣的問題“0.8的十六進制是多少?” 我想在我的空間里已經(jīng)有了詳細的講解,為什么他還要問這樣的問題那 于是我就動手算了一下,發(fā)現(xiàn)0.8、0.6、0.2. .一些數(shù)字在進制之間的轉(zhuǎn)化 過程中確實存在麻煩。 就比如“0.8的十六進制”吧! 無論你怎么乘以16,它的

18、余數(shù)總也乘不盡,總是余0.8 這可怎么辦啊,我也沒轍了 第二天,我請教了我的老師才知道,原來這么簡單啊! 具體方法如下: 0.8*16=12.8 0.8*16=12.8 . . . . . 取每一個結(jié)果的整數(shù)部分為12既十六進制的C 如果題中要求精確到小數(shù)點后3位那結(jié)果就是0.CCC 如果題中要求精確到小數(shù)點后4位那結(jié)果就是0.CCCC 現(xiàn)在OK了,我想我的朋友再也不會因為進制的問題煩愁了! 下面是將十進制數(shù)轉(zhuǎn)換為負R進制的公式: N=(dmdm-1.d1d0)-R =dm*(-R)m+dm-1*(-R)m-1+.+d1*(-R)1+d0*(-R)0 15=1*(-2)4+0*(-2)3+0*

19、(-2)2+1*(-2)1+1*(-2)0 =10011(-2) 其實轉(zhuǎn)化成任意進制都是一樣的 初學者最容易犯的錯誤! 犯錯:(-617)D=(-1151)O=(-269)H 原因分析:如果是正數(shù)的話,上面的思路是正確的,但是由于正數(shù)和負數(shù)在原碼、反碼、補碼轉(zhuǎn)換上的差別,所以按照正數(shù)的求解思路去對負數(shù)進行求解是不對的。 正確的方法是:首先將-617用補碼表示出來,然后再轉(zhuǎn)換成八進制和十六進制(補碼)即可。 注:二進制補碼要用16位。 正確答案:(-617)D=(176627)O=(fd97)H 負數(shù)十進制轉(zhuǎn)換成八進制或十六進制方法 如(-12)10=()8=()16 第一步:轉(zhuǎn)換成二進制 10

20、00 0000 0000 1100 第二步:補碼,取反加一 注意:取反時符號位不變! 1111 1111 1111 0100 第三步:轉(zhuǎn)換成八進制是三位一結(jié)合:(177764)8 轉(zhuǎn)換成十六進制是四位一結(jié)合:(fff4)16 編輯本段C程序代碼:(支持負進制)#include <stdio.h> #include <math.h> main() long n,m,r; while( scanf( "%ld%ld",&n,&r)!=EOF) if (abs(r)> 1 && !(n <0 &&

21、 r> 0) long result100; long *p=result; printf( "%ld=",n); if (n!=0) while(n!=0) m=n/r;*p=n-m*r; if (*p <0 && r <0) *p=*p+abs(r);m+; p+;n=m; for (m=p-result-1;m>=0;m-) if (resultm> 9) printf( "%c",55+resultm); else printf( "%d",resultm); else print

22、f( "0"); printf( "(base%d)n",r); return 0; 以下為10進制以下轉(zhuǎn)換。用函數(shù),可直接拷貝。 (VS2008環(huán)境下C+控制臺代碼) #include "stdafx.h" #include <stdio.h> int x100; int jzzh(int y,int ml) int i,j; i=ml; x0=0; for(int a=1;a+) if(i!=0) xa=i%y; x0+; else break; i=i/y; return x0; int main(int argc,

23、 char *argv) printf("Hello, worldn"); long int y,ml; long int a; printf("請輸入需要轉(zhuǎn)換至進制數(shù):"); scanf("%d",&y); printf("請輸入數(shù)字:"); scanf("%d",&ml); jzzh(y,ml); for(a=x0;a>=1;a-) printf("%d",xa); printf("n"); return 0; 編輯本段Java代碼Java代碼實現(xiàn)十進制分別轉(zhuǎn)換為十

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論