当前位置:文档之家› 八进制数和十进制数相互转换

八进制数和十进制数相互转换

八进制数和十进制数相互转换
八进制数和十进制数相互转换

目录

课程设计任务书 (2)

1.设计题目 (3)

2.设计要求 (3)

3.理论知识 (3)

3.1进位计数制 (3)

3.2进制转换 (4)

3.3 ASCII 码 (5)

4.程序结构 (6)

4.1总体结构 (6)

4.2十进制转二进制DECibin (7)

4.3二进制转八进制binioct (8)

4.4八进制转二进制octbin (9)

4.5二进制转十进制binidec (10)

5.程序清单 (11)

6.运行结果 (15)

7.心得体会 (17)

本科生课程设计成绩评定表 (18)

课程设计任务书

学生姓名专业班级:

指导教师:徐东平工作单位:计算机科学与技术学院题目: 八进制数和十进制数相互转换

初始条件:

理论:完成了《汇编语言程序设计》课程,对微机系统结构和80系列指令系统有了较深入的理解,已掌握了汇编语言程序设计的基本方法和技巧。

实践:完成了《汇编语言程序设计》的4个实验,熟悉了汇编语言程序的设计环境并掌握了汇编语言程序的调试方法。

要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具

体要求)

进一步理解和掌握较复杂程序的设计方法,掌握子程序结构的设计和友好用户界面的设计。具体的设计任务及要求:

1)编写八进制和十进制间的转换程序;

2)要求在屏幕上输出结果。

3)程序采用子程序结构,结构清晰;

4)友好清晰的用户界面,能识别输入错误并控制错误的修改。

在完成设计任务后,按要求撰写课程设计说明书;对课程设计说明书的具体要求请见课程设计指导书。

阅读资料:

1)《IBM—PC汇编语言程序设计实验教程》实验2.4

2)《IBM—PC汇编语言程序设计(第2版)》例6.11

时间安排:

设计安排一周:周1、周2:完成系统分析及设计。

周3、周4:完成程序调试,和验收。

周5:撰写课程设计报告。

指导教师签名:年月日

系主任(或责任教师)签名:年月日

八进制数和十进制数相互转换

1.设计题目

八进制数和十进制数相互转换。

2.设计要求

本次课程设计着重于理论设计,同时培养动手能力。要求运用自己所学知识进行设计实现,体现自己的知识掌握水平,严禁抄袭(发现后抄袭者和被抄袭者一律不及格)。所作设计需进行论证,一方面是从理论上进行推理验证,另一方面是实验论证。

内容包括:设计题目;原始条件及参数;要求完成的主要任务(如:设计方案的选择与确定、设计计算、程序编制、说明书撰写等具体要求);时间安排等。

3.理论知识

3.1进位计数制

(1)十进制数( Decimal )

十进制数是人们十分熟悉的计数体制。它用 0 、 1 、 2 、 3 、 4 、 5 、6 、 7 、 8 、 9 十个数字符号,按照一定规律排列起来表示数值的大小。每一个位置(数位)只能出现十个数字符号 0 ~ 9 中的其中一个。通常把这些符号的个数称为基数,十进制数的基数为 10 ;同一个数字符号在不同的位置代表的数值是不同的。十进制基于位进制和十进位两条原则,即所有的数字都用10个基本的符号表示,满十进一,同时同一个符号在不同位置上所表示的数值不同,符号的位置非常重要。基本符号是0到9十个数字。要表示这十个数的10倍,就将这些数字右移一位,用0补上空位,即10,20,30,...,90;要表示这十个数的10倍,就继续左移数字的位置,即100,200,300,...。要表示一个数的1/10,就右移这个数的位置,需要时就0补上空位:1/10位0.1,1/100为0.01,1/1000为0.001。

(2)二进制数( Binary )

二进制是计算技术中广泛采用的一种数制。二进制数据是用0和1两个数码来表示的数。它的基数为2,进位规则是“逢二进一”,借位规则是“借一当二”,由18世纪德国数理哲学大师莱布尼兹发现。当前的计算机系统使用的基本上是二进制系统。

(3)八进制数( Octal )

在八进制中,基数为 8 ,它有 0 、 1 、 2 、 3 、 4 、 5 、 6 、 7 八个数字符号,八进制的基本运算规则是“逢八进一”,各数位的权是 8 的幂。

3.2进制转换

(1)十进制数与二进制数互换

a.十进制数转换成二进制数

整数部分的转换——除2取余法。整数部分的转换采用“除2取余法”。即用2多次除被转换的十进制数,直至商为0,每次相除所得余数,按照第一次除2所得余数是二进制数的最低位,最后一次相除所得余数是最高位,排列起来,便是对应的二进制数。

小数部分的转换——乘2取整法。小数部分的转换采用“ 乘2取整

法” 。即用2多次乘被转换的十进制数的小数部分,每次相乘后,所得乘积的整数部分变为对应的二进制数。第一次乘积所得整数部分就是二进制数小数部分的最高位,其次为次高位,最后一次是最低位。

b.二进制数转换成十进制数

二进制转十进制从最后一位开始算,依次列为第0、1、2...位第n位的数(0或1)乘以2的n次方得到的结果相加就是答案例如:01101011.转十进制: 第0位:1乘2的0次方=1 1乘2的1次方=2 0乘2的2次方=0 1乘2的3次方=8 0乘2的4次方=0 1乘2的5次方=32 1乘2的6次方=64 0乘2的7次方=0 然后:1+2+0 +8+0+32+64+0=107.二进制01101011=十进制107.

(2)二进制数与八进制数互换

a.二进制数转换成八进制数

因为三位二进制数正好表示 0 ~ 7 八个数字,所以一个二进制数要转换成八进制数时,以小数点为界分别向左向右开始,每三位分为一组,一组一组地转换成对应的八进制数字。若最后不足三位时,整数部分在最高位前面加 0 补足三位再转换;小数部分在最低位之后加 0 补足三位再转换。然后按原来的顺序排列就得到八进制数了。

八进制与二进制对照表

八进制0 1 2 3 4 5 6 7

二进制000 001 010 011 100 101 110 111

b.八进制数转换成二进制数

一个八进制数要转换成二进制数时,以小数点为界分别向左向右开始,每一位八进制数字换成对应的三位二进制数即可。

3.3 ASCII 码

由于计算机只能直接接受、存储和处理二进制数。对于数值信息可以采用二进制数码表示,对于非数值信息可以采用二进制代码编码表示。编码是指用少量基本符号根据一定规则组合起来以表示大量复杂多样的信息。一般所来,需要用二进制代码表示哪些文字、符号取决于我们要求计算机能够“识别”哪些文字、符号。为了能将文字、符号也存储在计算机里,必须将文字、符号按照规定的编码转换成二进制数代码。目前计算机中用得最广泛的字符集及其编码,是由美国国家标准局(ANSI)制定的ASCII码(American Standard Code for Information Interchange,美国标准信息交换码),它已被国际标准化组织(ISO)定为国际标准,称为ISO 646标准。适用于所有拉丁文字字母,ASCII码有7位码和8位码两种形式。因为1位二进制数可以表示(2=)2种状态:0、1;而2位二进制数可以表示(2=)4种状态:00、01、10、11;依次类推,7位二进制数可以表示(2=)128种状态,每种状态都唯一地编为一个7位的二进制码,对应一个字符(或控制码),这些码可以排列成一个十进制序号0~127。所以,7位ASCII码是用七位二进制数进行编码的,可以表示128个字符。第0~32号及第127号(共34个)是控制字符或通讯专用字符,如控制符:LF(换行)、CR(回车)、FF(换页)、DEL(删除)、BS(退格)、BEL(振铃)等;通讯专用字符:SOH(文头)、EOT(文尾)、ACK(确认)等;第33~126号(共94个)是字符,其中第48~57号为0~9十个阿拉伯数字;65~90号为26个大写英文字母,97~122号为26个小写英文字母,其余为一些标点符号、运算符号等。

4.程序结构

4.1总体结构

开始

选择转换方式

调用octbin 调用crlf

调用binidec 调用crlf

调用DECibin

调用crlf

调用binioct

调用crlf

结束

八进制转十进制十进制转八进制

开始

BX清零

输入数值

<0或>9d 转ASCII

交换AX、BX

AX乘10

交换AX、BX

加上AX

结束

开始

BX左移2位

把最右面的2位转为ASCII码

显示一个字符

循环计数值置为2

BX循环左移3位

把最右面的3位转为ASCII码

显示一个字符

循环计数值

=0?

N

Y

结束

开始

BX 清零

输入十进制数

判定范围

移位数字为3

左移3位

AH 清零

添加新二进制位

结束

跳转输入

<0重新输入

<8继续执行

开始

CX置10000d 调用子程序CX置1000d 调用子程序CX置100d 调用子程序CX置10d

调用子程序CX置1d

调用子程序结束

开始

把二进制数转入AX

DX清零

除法运算

余数移入BX

商移入DL

商转为ASCII

显示商

结束

子程序

DEC_div

5.程序清单

;DECIOCT

;十进制与八进制相互转换

;首先选择算法,1为八进制转十进制,2为十进制转八进制

;***************************

DECioct SEGMENT

ASSUME CS:DECioct

;主程序部分。

main PROC FAR

start: MOV DL,3ah ;显示提示附

MOV AH,2

INT 21h

MOV AH,1 ;输入选择数字

INT 21h

CMP AL,32h ;数字为1时,执行八进制转十进制 JE REPEat2 ;数字为2时,执行十进制转八进制

REPEat1: CALL octbin ;键盘输入八进制数转为二进制

CALL crlf ;回车并换行

CALL binidec ;二进制转十进制

CALL crlf ;回车并换行

JMP REPEat1 ;重复执行

REPEat2: CALL DECibin ;键盘输入十进制数转为二进制

CALL crlf ;回车并换行

CALL binioct ;二进制转八进制

CALL crlf ;回车并换行

JMP REPEat2 ;重复执行

main ENDP

;-----------------------------

;十进制转二进制

DECibin PROC NEAR

MOV BX,0 ;将BX清零

NEwchar2:

MOV AH,1

INT 21h ;21号中断输入

SUB AL,30h ;ASCII转二进制

JL exit2 ;<0则跳转

CMP AL,9d ;判断是否>9

JG exit2 ;如果大于则不是十进制数 CBW ;字节转为字

XCHG AX,BX ;交换寄存器

MOV CX,10d ;把10放如CX

MUL CX ;AX扩大10倍

XCHG AX,BX ;交换寄存器

ADD BX,AX ;原数的10倍加上输入数 JMP NEwchar2 ;跳转输入

exit2:

RET

DECibin ENDP

;---------------------------------------

;二进制转八进制

binioct PROC NEAR

MOV CL,2 ;移位数字2

ROL BL,CL ;循环左移2位

MOV AL,BL ;把输入的数送入AL

AND AL,03h ;将高六位屏蔽

ADD AL,30h ;转换为ASCII

MOV DL,AL ;输出AL

MOV AH,2

INT 21h

MOV CH,2 ;剩余显示2位

rotate2:

MOV CL,3 ;移位数字3

ROL BL,CL ;循环左移3位

MOV AL,BL ;把输入的数送入AL

AND AL,07h ;将高五位屏蔽

ADD AL,30h ;转换为ASCII

MOV DL,AL ;输出AL

MOV AH,2

INT 21h

DEC CH ;递减CH

JNZ rotate2 ;CH不为0则跳转

RET

binioct ENDP

;---------------------------------------

;八进制转二进制

octbin PROC NEAR

MOV BX,0 ;BX清零

NEwchar1:

MOV AH,1 ;输入数字

INT 21h

SUB AL,30h ;转换为二进制数

JL exit1

CMP AL,8d ;如果<8则跳转

JL ADD_to1

CMP AL,10h

JGE exit1

ADD_to1:

MOV CL,3 ;移位数字3

SHL BX,CL ;左移3位

MOV AH,0 ;AH清0

ADD BX,AX ;把新位移入数字

JMP NEwchar1 ;跳转继续输入

exit1:

RET

octbin ENDP

;--------------------------------------

;二进制转十进制

binidec PROC NEAR

MOV CX,10000d ;除数为10000

CALL DEC_div

MOV CX,1000d ;除数为1000

CALL DEC_div

MOV CX,100d ;除数为100

CALL DEC_div

MOV CX,10d ;除数为10

CALL DEC_div

MOV CX,1d ;除数为1

CALL DEC_div

RET

;---------------------------------------

;子程序

DEC_div PROC NEAR

MOV AX,BX ;把二进制数移入AX MOV DX,0 ;DX高八位清零

DIV CX ;除数CX

MOV BX,DX ;余数移入BX

MOV DL,AL ;商移入DL

ADD DL,30h ;转换为ASCII MOV AH,2 ;输出十进制数位 INT 21h

RET

DEC_div ENDP

;---------------------------------------

binidec ENDP

;---------------------------------------

;回车和换行。

crlf PROC NEAR

MOV DL,0dh ;回车

MOV AH,2 ;输出

INT 21h

MOV DL,0ah ;换行

MOV AH,2 ;输出

INT 21h

RET

crlf ENDP

;----------------------------------------

DECioct ENDS

;*****************************************

END start

6.运行结果

a.八进制数转十进制数

输入:1

输入正常值(如562,4210,22)

输入异常值(如9)

b.十进制数转八进制数

输入:2

输入正常值(如163,89,8)

输入异常值(如a,b,,)

7.心得体会

通过此次课程设计,我获益匪浅,现总结如下:

(1)我深刻体会到汇编语言是计算机能够提供给用户使用的最快而又最有效的语言,也是能够利用计算机所有硬件特性并能直接控制硬件的唯一语言。因而,对程序的空间和时间要求很高的场合,汇编语言的应用是必不可少的。至于很多需要直接控制硬件的应用场合,则更是非用汇编语言不可了。

(2)我还意识到计算机是通过执行指令序列来解决问题的,因而每种计算机都有一组指令集供给用户使用,这组指令集就称为计算机的指令系统。而指令是由操作码字段和操作数字段两部分组成。操作码字段指示计算机所要执行的操作,而操作数字段则指出在指令执行操作的过程中所需要的操作数。

(3)汇编语言是非常繁琐的。它有很多操作码,并且其助记符也是很难记清楚的。因此,虽然我的课设题目不难,却花了我很长时间。最后的结果虽然正确,但数位很少,程序扩展性也很差。汇编语言不仅要求我们有严谨的逻辑系统,更要求有扎实的基础和记忆。

(4)我还意识到理论学习与实际操作有很大差距。在今后的课程学习中,我会认真对待每一次实践机会,努力提高自己的上机操作能力,让自己的编程能力更上一层楼。我还会继续学习汇编语言,相信它会给我带来更大收获。

本科生课程设计成绩评定表

班级:计算机科学与技术姓名:学号:

序号评分项目满分实得分

1 学习态度认真、遵守纪律10

2 设计分析合理性10

3 设计方案正确性、可行性、创造性20

4 设计结果正确性40

5 设计报告的规范性10

6 设计验收10

总得分/等级

评语:

注:最终成绩以五级分制记。优(90-100分)、良(80-89分)、中(70-79分)、及格(60-69分)、60分以下为不及格

指导教师签名:

2012 年1月日

十进制数与十六进制数的转换方法

若十进制数23785转为十六进制,则用23785/16=1486余9,1486/16=92余14,92/16=5余12,5/16=0余5,十六进制中,10对应为a、11对应为b、。。。。。。、15对应为f,再将余数倒写为5ce9,则十进制23785=十六进制5ce9 十六进制数的第0位的权值为16的0次方,第1位的权值为16的1次方,第2位的权值为16的2次方…… 所以,在第N(N从0开始)位上,如果是是数X (X 大于等于0,并且X小于等于15,即:F)表示的大小为X * 16的N次方。 假设有一个十六进数2AF5, 那么如何换算成10进制呢? 用竖式计算:2AF5换算成10进制: 第0位:5 * 16^0 = 5 第1位:F * 16^1 = 240 第2位:A * 16^2 = 2560 第3位:2 * 16^3 = 8192 + ------------------------------------- 10997 直接计算就是: 5 * 16^0 + F * 16^1 + A * 16^2 + 2 * 16^3 = 10997 二进制的1101转化成十进制 1101(2)=1*2^0+0*2^1+1*2^2+1*2^3=1+0+4+8=13 转化成十进制要从右到左用二进制的每个数去乘以2的相应次方不过次方要从0开始 十进制转二进制:用2辗转相除至结果为1 将余数和最后的1从下向上倒序写就是结果例如302 302/2 = 151 余0 151/2 = 75 余1 75/2 = 37 余1 37/2 = 18 余1 18/2 = 9 余0 9/2 = 4 余1 4/2 = 2 余0 2/2 = 1 余0 1/2 = 0 余1 故二进制为100101110 二进制转八进制 在把二进制数转换为八进制表示形式时,对每三位二进制位进行分组,应该从小数点所在位置分别向左向右划分,若整数部分倍数不是3的倍数,可以在最高位前面补若干个0;对小数部分,当其位数不是的倍数时,在最低位后补若干个0.然后从左到右把每组的八进制码依次写出,即得转换结果. 你算一下就知道了啊比如110=2^2+2+0=6 二进制转十六进制 要将二进制转为16进制,只需将二进制的位数由右向左每四位一个单位分隔,分的不够的前边补零,用四位数的二进制数来代表一个16进制。转换表如下,括号内为十六进制 0000(0)0001 (1)0010 (2)0011 (3)0100 (4)0101 (5)0110 (6)0111 (7)1000 (8)1001 (9)1010(A)1011 (B)

计算机考试中各种进制转换的计算方法

二进制数第0位的权值是2的0次方,第1位的权值是2的1次方…… 所以,设有一个二进制数:0110 0100,转换为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 + --------------------------- 100 用横式计算为: 0 * 20 + 0 * 21 + 1 * 22 + 1 * 23 + 0 * 24 + 1 * 25 + 1 * 26 + 0 * 27 = 100 0乘以多少都是0,所以我们也可以直接跳过值为0的位: 1 * 2 2 + 1 * 2 3 + 1 * 25 + 1 * 26 = 100 2.2 八进制数转换为十进制数 八进制就是逢8进1。 八进制数采用 0~7这八数来表达一个数。

八进制数第0位的权值为8的0次方,第1位权值为8的1次方,第2位权值为8的2次方…… 所以,设有一个八进制数:1507,转换为十进制为: 用竖式表示: 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 结果是,八进制数 1507 转换成十进制数为 839 2AF5换算成10进制: 第0位: 5 * 160 = 5 第1位: F * 161 = 240 第2位: A * 162 = 2560 第3位: 2 * 163 = 8192 +

二进制十进制八进制十六进制转换练习题

数制及相互转换 一、单选题 1、下列数据中数值最小的是 A、01110000B B、249D C、125Q D、AAH 2、下列数据中数值最大的是 A、3FH B、64D C、77Q D、111110B 3、下列数据中数值最大的是 A、100H B、100D C、100Q D、100B 4、十进制数24转换成二进制数是 A、11100 B、11010 C、11000 D、10100 5、下列数据中数值最小的是 A、11110000(二进制) B、249(十进制) C、274(八进制) D、FA(十六进制) 6、下列数据中数值最大的是 A、11101101(二进制) B、235(十进制) C、351(八进制) D、EE(十六进制) 7、下列各数中最大的是 A、11010110B B、D7 H C、214D D、325Q 8、与二进制数100101等值的十进制数是 A、34 B、35 C、36 D、37 9、与十进制数256等值的二进制数是 A、1000000 B、10000000 C、100000000 D、1000000000 10、与十六进制数ACE等值的十进制数是 A、2766 B、2765 C、2764 D、2763 11、十六进制数111与八进制数111之和,用八进制数表示为 A、310 B、1222 C、1000 D、532 12、按某种进制运算2 × 4=12,那么4 × 5为 A、20 B、32 C、24 D、12 13、若216是某种数制的一个数,它的值与十六进制数8E相等,则该数是()进制数。 A、六 B、八 C、九 D、十 14、下列各数中,属于合法的五进制数的是 A、216 B、123 C、354 D、189 15、下列无符号十进制中,能用8位二进制表示的是 A、257 B、288 C、256 D、255 16、无符号二进制数后加上一个0,形成的数是原来的几倍? A、1 B、2 C、1/2 D、4 17、下列数据中数值最大的是 A、(10000)2 B、(17)8 C、(17)10 D、(10)16 18、某学校有1500名学生,若用二进制来编学号,需要多少位来表示。 A、10 B、11 C、12 D、13

十进制数与十六进制数的转换方法

一,十进制转换十六进制 若十进制数23785转为十六进制,则用 23785/16=1486余9, 1486/16=92余……14, 92/16=5余………….12, 5/16=0余……………..5,十六进制中,10对应为a、11对应为b、。。。。。。、15对应为f,再将余数倒写为5ce9,则十进制23785=十六进制5ce9 二,十六进制转换十进制 十六进制数的第0位的权值为16的0次方,第1位的权值为16的1次方,第2位的权值为16的2次方…… 所以,在第N(N从0开始)位上,如果是是数X (X 大于等于0,并且X小于等于15,即:F)表示的大小为X * 16的N次方。 假设有一个十六进数2AF5, 那么如何换算成10进制呢? 用竖式计算:2AF5换算成10进制: 第0位:5 * 16^0 = 5 第1位:F * 16^1 = 240 第2位:A * 16^2 = 2560 第3位:2 * 16^3 = 8192 直接计算就是: 5 * 16^0 + F * 16^1 + A * 16^2 + 2 * 16^3 = 10997 三,二进制的1101转化成十进制 1101(2)=1*2^0+0*2^1+1*2^2+1*2^3=1+0+4+8=13 转化成十进制要从右到左用二进制的每个数去乘以2的相应次方不过次方要从0开始 十进制转二进制:用2辗转相除至结果为1 将余数和最后的1从下向上倒序写就是结果例如302 302/2 = 151 余0 151/2 = 75 余1 75/2 = 37 余1 37/2 = 18 余1 18/2 = 9 余0 9/2 = 4 余1 4/2 = 2 余0 2/2 = 1 余0 1/2 = 0 余1 故二进制为100101110 四,二进制转八进制 在把二进制数转换为八进制表示形式时,对每三位二进制位进行分组,应该从小数点所在位置分别向左向右划分,若整数部分倍数不是3的倍数,可以在最高位前面补若干个0;对小数部分,当其位数不是的倍数时,在最低位后补若干个0.然后从左到右把每组的八进制码依次写出,即得转换结果. 你算一下就知道了啊比如110=2^2+2+0=6 五,二进制转十六进制 要将二进制转为16进制,只需将二进制的位数由右向左每四位一个单位分隔,分的不够的前边补零,用四位数的二进制数来代表一个16进制。转换表如下,括号内为十六进制 0000(0)0001(1)0010(2)0011(3)0100(4)0101(5) 0110(6)0111(7)1000(8)1001(9)1010(A)1011(B) 1100(C)1101(D)1110(E)1111(F) 例如:10101011划分为1010 1011,根据转换表十六进制为AB

高中信息技术基础进制转换二进制十进制十六进制转换转化

2进制数转换为10进制 (110)2转化为十进制 10进制整理转换成2进制 于是,结果是余数的倒排列,即为: (37)10=(a5a4a3a2a1a0)2=(100101)2 16进制转化成2进制、2进制转化成16进制 (二进制和十六进制的互相转换比较重要。不过这二者的转换却不用计算,每个C,C++程序员都能做到看见二进制数,直接就能转换为十六进制数,反之亦然。) 16进制转化成2进制:每一位十六进制数对应二进制的四位,逐位展开。 二进制数转为十六进制:将二进制数转换成十六进制数是将二进数的整数部分从右向左每四位一组,每一组为一位十六进制整数,不足四位时,在前面补0 (FB)16=(1111 ,1011)2 互转

2进制与16进制的关系: 2进制0000 0001 0010 0011 0100 0101 0110 0111 16进制0 1 2 3 4 5 6 7 2进制1000 1001 1010 1011 1100 1101 1110 1111 16进制8 9 A B C D E F 可以用四位数的二进制数来代表一个16进制,如3A16 转为二进制为: 3为0011,A 为1010,合并起来为00111010。可以将最左边的0去掉得1110102 右要将二进制转为16进制,只需将二进制的位数由右向左每四位一个单位分隔,将各单位对照出16进制的值即可。 16进制数转换为10进制数 假设有一个十六进数 2AF5, 那么如何换算成10进制呢? 用竖式计算: 2AF5换算成10进制: 直接计算就是: 5 * 16^0 + F * 16^1 + A * 16^2 + 2 * 16^3 = 10997 (别忘了,在上面的计算中,A表示10,而F表示15) 假设有人问你,十进数 1234 为什么是一千二百三十四? 你尽可以给他这么一个算式: 1234 = 1 * 10^3 + 2 * 10^2 + 3 * 10^1 + 4 * 10^0 如十进制数2039 它可以表示为:2*10^3+0*10^2+3*10^1+9*10^0

java 十进制数转换为二进制,八进制,十六进制数的算法

java ê?????êy×a???a?t????,°?????,ê?áù????êyμ???·¨ using System; using System.Collections.Generic; using https://www.doczj.com/doc/7518070577.html,ponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; namespace ExDtoB { public partial class Form1 : Form { public Form1() { InitializeComponent(); } //ê?????×a?t?? public string DtoB(int d) { string b = ""; //?D????êyè?1?D?óú2£??ò?±?óê?3? if (d < 2) { b = d.ToString(); } else { int c; int s = 0; int n = d; while (n >= 2) { s++; n = n / 2; } int[] m = new int[s]; int i = 0; do

{ c = d / 2; m[i++] = d % 2; d = c; } while (c >= 2); b = d.ToString(); for (int j = m.Length - 1; j >=0; j--) { b += m[j].ToString (); } } return b; } //ê?????×a°????? public string DtoO(int d) { string o = ""; if (d < 8) { o = d.ToString(); } else { int c; int s=0; int n=d; int temp = d; while (n >= 8) { s++; n = n / 8; } int[] m = new int[s]; int i = 0; do { c = d / 8; m[i++] = d % 8; d = c; } while (c >= 8); o = d.ToString();

各种进制之间转换方法

各进制转换方法(转载) 一、计算机中数的表示: 首先,要搞清楚下面3个概念 ?数码:表示数的符号 ?基:数码的个数 ?权:每一位所具有的值 请看例子: 数制十进制二进制八进制十六进制 数码0~9 0~1 0~7 0~15 基10 2 8 16 权10o,101,102,…2o,21,22,…8o,81,82,…16o,161,162,…特点逢十进一逢二进一逢八进一逢十六进一 十进制4956= 4*103+9*102 +5*101+6*10o 二进制1011=1*23+0*22 +1*21+1*2o 八进制4275=4*83+2*82 +7*81+5*8o 十六进制81AE=8*163+1*162 +10*161+14*16o

二、各种进制的转换问题 1.二、八、十六进制转换成十进制 2.十进制转换成二、八、十六进制 3.二进制、八进制的互相转换 4.二进制、十六进制的互相转换 1、二、八、十六进制转换成十进制 方法:数码乘以相应权之和 2、十进制转换成二、八、十六进制 方法:连续除以基,直至商为0,从低到高记录余数

3、二进制、八进制的互相转换 方法: ?二进制转换成八进制:从右向左,每3位一组(不足3位左补0),转换成八进制 ?八进制转换成二进制:用3位二进制数代替每一位八进制数 例(1101001)2=(001,101,001)2=(151)8 例 (246)8=(010,100,110)2=(10100110)2 4、二进制、十六进制的互相转换 方法: ?二进制转换成十六进制:从右向左,每4位一组(不足4位左补0),转换成十六进制 ?十六进制转换成二进制:用4位二进制数代替每一位十六进制数 例(11010101111101)2=(0011,0101,0111,1101)2=(357D)16 例 (4B9E)16=(0100,1011,1001,1110)2=(100101110011110)2 三、各种进制数的运算

进制十进制八进制十六进制转换练习题

进制十进制八进制十六进制转换练习题 TTA standardization office【TTA 5AB- TTAK 08- TTA 2C】

数制及相互转换 进制表示形式R代表任意进制 二进制 B R→十:按权展开求和二→八:三位变一位 八进制O (Q) 十→R:除R取余倒排二→十六:四位变一位 十进制 D 八→二:一位变三位 十六进制H 十六→二:一位变四位 一、单选题 1、下列数据中数值最小的是 A、01110000B B、249D C、125Q D、AAH 2、下列数据中数值最大的是 A、3FH B、64D C、77Q D、111110B 3、下列数据中数值最大的是 A、100H B、100D C、100Q D、100B 4、十进制数24转换成二进制数是 A、11100 B、11010 C、11000 D、10100 5、下列数据中数值最小的是 6、下列数据中数值最大的是 7、下列各数中最大的是 A、 B、D7 H C、214D D、325Q 8、与二进制数100101等值的十进制数是 A、34 B、35 C、36 D、37 9、与十进制数256等值的二进制数是 A、 1000000 B、 C、 D、

10、与十六进制数ACE等值的十进制数是 A、2766 B、 2765 C、2764 D、 2763 11、十六进制数111与八进制数111之和,用八进制数表示为 A、 310 B、 1222 C、 1000 D、 532 12、按某种进制运算2 × 4=12,那么4 × 5为 A、20 B、32 C、24 D、 12 13、若216是某种数制的一个数,它的值与十六进制数8E相等,则该数是()进制数。 A、六 B、八 C、九 D、十 14、下列各数中,属于合法的五进制数的是 A、216 B、 123 C、 354 D、189 15、下列无符号十进制中,能用8位二进制表示的是 A、 257 B、 288 C、 256 D、255 16、无符号二进制数后加上一个0,形成的数是原来的几倍 A、 1 B、 2 C、 1/2 D、4 17、下列数据中数值最大的是 A、(10000)2 B、(17)8 C、(17)10 D、(10)16 18、某学校有1500名学生,若用二进制来编学号,需要多少位来表示。 A、 10 B、 11 C、12 D、13 19、十进制数153转换成二进制数应为 A、 BC、 D、1110110

二进制数转换成十进制数是。

七、基础选择题 1.二进制数1110111.11 转换成十进制数是( ) 。 A.119.125 B.119.75 C.119.375 D.119.3 2.下列叙述中,正确的一条是( ) 。 A.存储在任何存储器中的信息,断电后都不会丢失 B.操作系统是只对硬盘进行管理的程序 C.硬盘装在主机箱内,因此硬盘属于主存 D.磁盘驱动器属于外部设备 3.英文OS指的是()。 A.显示英文的屏幕 B.窗口软件 C.操作系统 D.磁盘操作系统 4.数字符号0 的ASCII 码十进制表示为48,数字符号9 的ASCII 码十进制表示为( ) 。 A.56 B.57 C.58

D.59 5.目前使用的微型计算机,其主要逻辑器件是由( ) 构成的。 A.电子管 B.晶体管 C.中、小规模集成电路集成电路 D.大规模、超大规模集成电路 6.微机正在工作时电源突然中断供电,此时计算机( ) 中的信息全部丢失,恢 并且复供电后也无法恢复这些信息。 A.ROM B.RAM C.硬盘 D.软盘 7.与外存储器相比,内存储器的主要特征是( ) 。 A.存储大量的信息 B.存储正在运行的程序 C.能存储程序和数据 D.能长期保存信息 8.所谓“裸机”是指( ) 。 A.单片机 B.单板机 C.不装备任何软件的计算机 D.只装备操作系统的计算机

9.构成计算机的电子和机械的物理实体称为( ) 。

B.计算机硬件系统 C.主机 D.外设 10.在表示存储器的容量时,1MB的准确含义是()。 A.1000KB B.1024GM C.1000B D.1024KB 11?微型计算机的结构原理是采用() 结构,它使CPU与内存和外设的连接简单化与标准化。 A.总线 B.星形连接 C.网络 D.层次连接 12.指令构成的语言称为( ) 语言。 A.汇编 B.高级 C.机器 D.自然 13.软件包括( ) 。 A.程序 B.程序及文档 C.文档及数据

实数十进制转换二进制和二进制实数转换十、八、十六进制

答案为1、(213.4)10 = (11010101.01100)2 = (325)8 = (D5)16 2、(11001011.0101)2 = (203.3125)10 = (313)8 = (CB)16 (1) 213.4转换成二进制先转换整数部分再转换小数部分(十进制数字后边是d,二进制是2或者B) 213.4=(213)d+(0.4)d; 整数部分用除2法: (213)d=:(除2,商继续除2,余数从下往上就是二进制数) 213/2 商:余: 106 1 106/2 商余 53 0 53/2 商余 26 1 26/2 商余 13 0 13/2 商余 6 1 6/2 商余 3 0 3/2

商余 1 1 1/2 商余 0 1 余数从下往上(11010101)2就是213转化的二进制 小数部分用乘2法: (0.4)d=:(乘2满1写1然后小数部分继续乘以2,直到小数部分全部为零) 0.4*2=0.8(不满1为0) 0 0.8*2=1.6(满1取1、1.6-1=0.6) (1) 0.6*2=1.2(满1取1、1.2-1=0.2) (1) 0.2*2=0.4(不满1为0) 0 0.4*2=0.8(不满1为0) 0 ....... ..... .... ..... ..... 无限.... 从上往下取(01100.......) 乘下来如果小数部分可以全部为零为准确二进制纯小数(如(0.625)d=(0.101)2)是准确值,但是上边的例子是不行得,所以可以根据需要取到某精度。 于是:(213.4)d=(213)d+(0.4)d=(11010101)2+(01100)2=(11010101.01100)2 八进制和十六进制只能表示正整数,所以213.4要去掉小数部分成213再转换成八进制和十六进制 十进制转换八进制是除8:

用栈实现把十进制转化为八进制

#include #include #define STACK_INIT_SIZE 100 #define STACKINCREMENT 10 typedef struct { int *base; int *top; int stacksize; }sqstack; int InitStack(sqstack &s) { s.base=(int *)malloc(STACK_INIT_SIZE*sizeof(int)); if(!s.base) exit(-1); s.top=s.base; s.stacksize=STACK_INIT_SIZE; return 1; } int Pop(sqstack &s,int &e) { if(s.top==s.base) return 0; e=*--s.top; return 1; } int Push(sqstack &s,int e) { if(s.top-s.base==s.stacksize) { s.base=(int *)realloc(s.base,(s.stacksize+STACKINCREMENT)*sizeof(int)); if(!s.base) exit(-1); s.top=s.base+s.stacksize; s.stacksize+=STACKINCREMENT; } *s.top++=e; return 1; } int StackEmpty(sqstack s) { if(s.top==s.base) return 0; else return 1; }

数据结构 栈十进制转八进制的算法详解(已测试过)

实验目的 建立栈实现十进制转八进制 实验内容 编程序并上机调试运行。 建立栈实现十进制转八进制 1.编写程序 //十进制转八进制 #include #include #include #define STACK_INIT_SIZE 100 #define STACKINCREMENT 10 typedef struct { int *base; int *top; int stacksize; }sqstack; int initstack (sqstack *s) {s->base=(int *)malloc(STACK_INIT_SIZE * sizeof(int)); if(!s->base) exit(0); s->top=s->base; s->stacksize =STACK_INIT_SIZE ; return 0; }//构造一个空栈s int push(sqstack *s,int e) { if((s->top-s->base)>=s->stacksize){ s->base=(int*)realloc(s->base,(s->stacksize + STACKINCREMENT )*sizeof(int)); if(!(s->base)) exit(1);

s->top=s->base+s->stacksize; s->stacksize+=STACKINCREMENT; } *s->top++=e; return 0; }//插入新的元素e为新的栈顶元素 int stackempty (sqstack *s) {if(s->top==s->base) return 1; else return 0; }//若栈s为空栈,则返回1,否则返回0 int pop (sqstack *s,int *e) {if(s->top==s->base) return 1; *e=*--s->top; return 0; }//若栈不为空,则删除s的栈顶元素,用e返回其值,返回OK,否则返回ERROR void conversion (int n) { sqstack s; int e; initstack(&s); printf("请输入一个十进制数:\n"); scanf("%d",&n); while (n){ push(&s,n%8); n=n/8; } printf("\n"); printf("该数的八进制数为:\n"); while(!stackempty(&s)){ pop(&s,&e); printf("%d",e); }

进制转换方法总结

信息的编码 再问学生计算机存储信息是不是都采用了二进制数二进制也存在缺点,二进制都用0和1, 而且位数太多, 不易理解, 也易出错。为描述方便常用八、十进制,十六进制数表示二进制数 在微机中,一般在数字的后面,用特定字母表示该数的进制。 十进制:日常生活中最常见的是十进制数,用十个不同的符号来表示:0、1、2、3、4、5、6、7、8、9。 基为:10 运算规则:逢十进一,借一当十 在十进制数的后面加大写字母D以示区别。 二进制:二进制数只有两个代码“0”和“1”,所有的数据都由它们的组合来实现。 基为:2 运算规则:“逢二进一,借一当二”的原则。 在八进制数据后加英文字母“B” 八进制:使用的符号:0、1、2、3、4、5、6、7; 运算规则:逢八进一; 基为:8 在八进制数据后加英文字母“O”, 十六进制:使用的符号:采用0~9和A、B、C、D、E、F六个英文字母一起共十六个代码。 运算规则:逢十六进一

基为:16 在十六进制数据后加英文字母“H”以示分别。 那么二进制数与八进制、十进制,十六进制数是怎么转换的呢 3、协作提高:用讲解法对二进制数与十进制数、十六进制数之间相互的转换的原理及方法(将二进制数字表示的位权值与十进制数字表示的位权值加以对比),叫几位学生到黑板上来做,其它同学在下面草稿纸上做。观察在黑板上做的同学的对错情况,要知道错,错在那里。 由N进制数转换成十进制数的基本做法是,把N进制数首先写成加权系数展开式,然后按十进制加法规则求和。这种做法称为"按权相加"法。 各数制的权 如:十进制中,各位的权为10n-1 二进制中,各位的权为2n-1 十六进制中,各位的权为16n-1 八进制中,各位的权为8n-1 1)、二进制转换为十进制 各数制中整数部分不同位的权为“基的n-1次方(n为数值所在的位数,n的最小值取1)”,小数部分不同位的权值为“基的-n次方,从左向右,每移一位,幂次减1”。 二进制数的基数为2 例()2=()D

数据结构-栈十进制转八进制的算法详解(已测试过)

数据结构-栈十进制转八进制的算法详解(已测试过)

实验目的 建立栈实现十进制转八进制 实验内容 编程序并上机调试运行。 建立栈实现十进制转八进制 1.编写程序 //十进制转八进制 #include #include #include #define STACK_INIT_SIZE 100 #define STACKINCREMENT 10 typedef struct { int *base; int *top; int stacksize; }sqstack; int initstack (sqstack *s) {s->base=(int *)malloc(STACK_INIT_SIZE * sizeof(int)); if(!s->base) exit(0); s->top=s->base; s->stacksize =STACK_INIT_SIZE ; return 0; }//构造一个空栈s int push(sqstack *s,int e) { if((s->top-s->base)>=s->stacksize){ s->base=(int*)realloc(s->base,(s->stacksize +

STACKINCREMENT )*sizeof(int)); if(!(s->base)) exit(1); s->top=s->base+s->stacksize; s->stacksize+=STACKINCREMENT; } *s->top++=e; return 0; }//插入新的元素e为新的栈顶元素 int stackempty (sqstack *s) {if(s->top==s->base) return 1; else return 0; }//若栈s为空栈,则返回1,否则返回0 int pop (sqstack *s,int *e) {if(s->top==s->base) return 1; *e=*--s->top; return 0; }//若栈不为空,则删除s的栈顶元素,用e返回其值,返回OK,否则返回ERROR void conversion (int n) { sqstack s; int e; initstack(&s); printf("请输入一个十进制数:\n"); scanf("%d",&n); while (n){ push(&s,n%8); n=n/8; } printf("\n"); printf("该数的八进制数为:\n"); while(!stackempty(&s)){ pop(&s,&e);

二进制数转换成十进制数

二进制数转换成十进制数 二进制的1101转化成十进制 1101(2)=1*2^0+0*2^1+1*2^2+1*2^3=1+0+4+8=13 转化成十进制要从右到左用二进制的每个数去乘以2的相应次方 不过次方要从0开始 相反用十进制的数除以2 每除一下将余数就记在旁边 最后按余数从下向上排列就可得到1101 十进制转二进制: 用2辗转相除至结果为1 将余数和最后的1从下向上倒序写就是结果 例如302 302/2 = 151 余0 151/2 = 75 余1 75/2 = 37 余1 37/2 = 18 余1 18/2 = 9 余0 9/2 = 4 余1 4/2 = 2 余0 2/2 = 1 余0 1/2 = 0 余1 故二进制为100101110

二进制转十进制 从最后一位开始算,依次列为第0、1、2...位 第n位的数(0或1)乘以2的n次方 得到的结果相加就是答案 例如:01101011.转十进制: 第0位:1乘2的0次方=1 1乘2的1次方=2 0乘2的2次方=0 1乘2的3次方=8 0乘2的4次方=0 1乘2的5次方=32 1乘2的6次方=64 0乘2的7次方=0 然后:1+2+0 +8+0+32+64+0=107. 二进制01101011=十进制107. 由二进制数转换成十进制数的基本做法是,把二进制数首先写成加权系数展开式,然后按十进制加法规则求和。这种做法称为"按权相加"法。 二进制转十进制 本人有个更直接的方法,例如二进制数1000110转成十进制数可以看作这样:

数字中共有三个1 即第二位一个,第三位一个,第七位一个,然后十进制数即2的2-1次方+2的3-1次方+2的7-1次方即 2+4+64=70 次方数即1的位数减一。如此计算只需要牢记2的前十次方即可在此本人为大家陈述一下:2的0次方是1 2的1次方是2 2的2次方是4 2的3次方是8 2的4次方是16 2的5次方是32 2的6次方是64 2的7次方是128 2的8次方是256 2的9次方是512 2的10次方是1024 2的11次方是2048 2的12次方是4096 2的13次方是8192 2的14次方是16384 2的15次方是32768 2的16次方是65536 在这里仅为您提供前16次方,若需要更多请自己查询。 十进制数转换为二进制数

十进制数转换成十六进制

怎么把EXCEL表格里的一列里的十进制数转换成十六进制? DEC2HEX 将十进制数转换为十六进制数。 如果该函数不可用,并返回错误值#NAME?,请安装并加载“分析工具库”加载宏。 操作方法 在“工具”菜单上,单击“加载宏”。 在“可用加载宏”列表中,选中“分析工具库”框,再单击“确定”。 如果必要,请遵循安装程序中的指示。 语法 DEC2HEX(number,places) Number 待转换的十进制数。如果参数number 是负数,则省略places。函数DEC2HEX 返回10 位十六进制数(40 位二进制数),最高位为符号位,其余39 位是数字位。负数用二进制数的补码表示。 Places 所要使用的字符数,如果省略places,函数DEC2HEX 用能表示此数的最少字符来表示。当需要在返回的数值前置零时places 尤其有用。 说明: 如果number < -549、755、813、888 或者number > 549、755、813、887,则函数DEC2HEX 返回错误值#NUM!。 如果参数number 为非数值型,函数DEC2HEX 将返回错误值#VALUE!。 如果函数DEC2HEX 需要比places 指定的更多的位数,将返回错误值#NUM!。 如果places 不是整数,将截尾取整。 如果places 为非数值型,函数DEC2HEX 将返回错误值#VALUE!。 如果places 为负值,函数DEC2HEX 将返回错误值#NUM!。 示例 如果您将示例复制到空白工作表中,可能会更易于理解该示例。 操作方法 创建空白工作簿或工作表。 请在“帮助”主题中选取示例。不要选取行或列标题。 从帮助中选取示例。 按Ctrl+C。 在工作表中,选中单元格A1,再按Ctrl+V。 若要在查看结果和查看返回结果的公式之间切换,请按Ctrl+`(重音符),或在“工具”菜单上,指向“公式审核”,再单击“公式审核模式”。 公式说明(结果) =DEC2HEX(100, 4) 将十进制数100 转换为4 个字符的十六进制数(0064) =DEC2HEX(-54) 将十进制数-54 转换为十六进制数(FFFFFFFFCA)

各种进制的算法(终审稿)

各种进制的算法 文稿归稿存档编号:[KKUY-KKIO69-OTM243-OLUI129-G00I-FDQS58-

进制 一位八进制数字可以用三位二进数来表示,一位十六进制数可以用四位二进数来表示,所以二进制和八进制、十六进制间的转换非常简单 例1:将(1010111.01101)2转换成八进制数(从小数点方向向左向右算起) 1010111.01101=001 010 111. 011 010 (补齐三位,因为一位八进制数字由三位二进制数来表示) ↓ ↓ ↓ ↓ ↓ 12 73 2

例2、将(327.5)8转换为二进制3 2 7. 5 ↓ ↓ ↓ ↓ 011 010 111.101

(补齐四位,因为一位十六进制数字由四位二进制数来表示)↓ ↓ ↓ ↓ ↓1 B D 7 4 将(27.FC)16转换成二进制数2 7. F C↓ ↓ ↓ ↓ 0010 0111 1111 1100 所以(27.FC)16=(100111.111111)2 十进制转二进制:用2辗转相除至结果为1 将余数和最后的1从下向上倒序写就是结果例如302 302/2 = 151 余0 151/2 = 75 余1 75/2 = 37 余1 37/2 = 18 余1 18/2 = 9 余0 9/2 = 4 余1 4/2 = 2 余0 2/2 = 1 余0 二进制转十进制从最后一位开始算,依次列为第0、1、2... 位第n位的数(0或1)乘以2的n次方得到的结果相加就是答案例如:01101011.转十进制: 第0位:1乘2的0次方=1 1乘2的1次方=2 0乘2的2次方=0 1乘2的3次方=8 0乘2的4次方=0 1乘2的5次方=32 1乘2的6次方=64 0乘2的7次方=0 然后:1+2+0 +8+0+32+64+0=107.二进制01101011=十进制107.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)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

二进制码转换为十进制(BCD)码

二进制码转换为十进制(BCD)码 转换原理 对于一个8位二进制码bn-1bn-2……b1b0,,其在十进制编码方式下的值为 把上式写出套乘的形式: 式中的每项乘2,相当于将寄存器中的二进制码左移1位,这就意味着利用移位寄存器可以完成二进制与8421BCD的转换。[2] 在移位的过程中,当现态Sn<5时,次态不变。当现态Sn=5、6、7时,左移一次,其次态Sn+1将会超过9,对于一个BCD码来说,这样的状态属于禁用状态。而当Sn=8、9时,左移1位,则会向高1位的BCD码输入一个进位的信号 ,由于二进制和BCD码权不一致,当发生进位时,虽然码元只是左移1位,但次态Sn+1将减少6。基于上面这两种情况,在B/BCD转换时需要对转换结果加以校正。校正过程如下:当Sn>=5时,我们让Sn先加上3,然后再左移1位,次态 Sn+1=2(Sn+3)=2Sn+6,正好补偿由于进位而减少的数值,并且向后一个变换单元送入一个进位信号,这个方法叫“加3移位法”。 注意:现态和次态都是指BCD码,即用4位二进制表示的1位BCD码。我们对Sn=8、9时举个例子:BCD码的1000(8)乘以2为0001_0110(16),但是左移后变为0001_0000,减少了6。所以需要加上6,这里的方法是加3左移一位,相当于加上6。 转换方法 首先,先了解二进制与BCD码的位数对应关系,比如一个8位二进制码,可以表示的最大十进制数为255,转换成BCD码为 0010_0101_0101,共需12位,其中每4位组成一个BCD单元,有三个BCD单元,分别表示百位(hundreds)、十位(tens)和个位(units)。n位二进制码转换成D位BCD码的n~D 对应关系表见表1。 表1 n~D对应关系

进制转换C语言的实现

索引 一、算法分析 二、数据结构: 1、头文件 2、栈的关键操作 三、关键程序: 1、十进制进制转换为其它 2、其它进制转换为十进制 一、算法分析 实现进制转换需要编个函数,每一函数完成相应进制的转换,下面是各个进制之间转换的数学方法的算法。 十进制转二进制: 十进制数转换成二进制数,是一个连续除2的过程;把要转换的数,除以2,得到商和余数,将商继续除以2,直到商为0.最后将所有余数倒序排列,得到数就是转换结果。 例如: 302/2 = 151 余0 151/2 = 75 余1 75/2 = 37 余1 37/2 = 18 余1 18/2 = 9 余0 9/2 = 4 余1 4/2 = 2 余0 2/2 = 1 余0 所以302转换为2进制,结果:100101110

十进制转八进制: 十进制数转换成八进制的方法和转换为二进制的方法类似,唯一变化:除数由2变成8。 例如: 120/8=15余0 15/8=1余7 1/8=0余1 所以120转换为8进制,结果为:170 十进制转十六进制: 十进制数转换成十六进制数的方法和转换为二进制的方法类似,唯一变化:除数由2变成16。 不过,十六进制数:(10~15)是用英文大写字母(A~F)表示。例如: 123/16=7余11 所以123转换为16进制,结果为:7B 二进制转十进制: 二进制数转换为十进制数按权展开,第0位的权值是2的0次方,第1位的权值是2的1次方〃〃〃〃〃〃 例如: 1010转换成十进制数:

第0位:0*2^0=0 第1位:1*2^1=2 第2位:0*2^2=0 第3位:1*2^3=8 所以转换为10进制数为:0+2+0+8=10 二进制转八进制: 利用421,从后往前每三位一组,缺位除补0,然后按十进制方法进行转换。 例如: (11001) 001=1 011=3 然后将结果按从下往上顶顺序书写:31 二进制转十六进制: 二进制和十六进制的互相转换比较重要。不过这二者的转换却不用计算;利用8421,对于任意一个4位的二进制数,都可以很快算出它对应的10进制值。 例如: 1111=8+4+2+1=15 又因为十六进制数:10~15用大写字母A~F表示,所以15为F。

相关主题
文本预览
相关文档 最新文档