注册 登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

熊猫正正的博客

熊猫正正的天空

 
 
 

日志

 
 

进制转换及数据类型  

2012-05-06 17:57:10|  分类: 8086饭客网汇编学 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

需要掌握的内容:

1. 数据的表示方式

2. 进制的转换方法

1) 非十进制数转换成十进制数

2) 十进制数转换其它进制数

3. 基本的数据类型

数据的表示方法:

1. 二进制数:01 逢二进一:0+0=00+1=11+0=11+1=10

2. 八进制数:01234567 逢八进一:1+5=65+6=13

3. 十进制数:0123456789 逢十进一:1+5=65+6=11

4. 十六进制数:0123456789ABCDEF 逢十六进一:5+6=BA+B=15

1.0各种进制及其字符表示

进制

字符

例子

备注

二进制

B/Y

1010B、1011B

字符Y、O和T是宏汇编MASM系统所增加的进制表示符。

八进制

Q/O

1234O、311O

十进制

D/T

1234D、512D

十六进制

H

1234H、1011H

1.1  4位二进制数对应的十进制和十六进制数

二进制

十进制

十六进制

0000

0

0

0001

1

1

0010

2

2

0011

3

3

0100

4

4

0101

5

5

0110

6

6

0111

7

7

二进制

十进制

十六进制

1000

8

8

1001

9

9

1010

10

A

1011

11

B

1100

12

C

1101

13

D

1110

14

E

1111

15

F

进制的转换

非十进制数转换成十进制数:

方法:首先把非十进制数写成按权展开的多项式,然后按十进制数的计数规则求和。

例:2A.8H=(?)D

解:2A.8H=2*161+A*160+8*16-1

=32+10+0.5

=42.5D

例:165.2O=(?)D

解:165.2O=1*82+6*81+5*80+2*8-1

=64+48+5*0.25

=117.25D

例:10101.11B=(?)D

解:10101.11B=1*24+0*23+1*22+0*21+1*20+1*2-1+1*2-2

  =16+0+4+0+1+0.5+0.25

  =21.75D

十进制数转换其它进制数:

1.整数转换

方法:整数转换,采用基数连除法。把十进制整数N转换成R进制数的步骤:

1) N除以R,记下所得的商和余数

2) 将上一步所得的商再除以R,记下所得商和余数

3) 重复做第2步直到商为0

4) 将各个余数转换成R进制的数码,并按照和运算过程相反的顺序把各个余数排列起来,即为R进制数。

例:427D=(?)H

解: 

427D=1ABH

例:427D=(?)O

解:

427D=653O

例:11D=(?)B

解:

11D=1011B

2.纯小数转换

纯小数转换,采用基数连乘法。把十进制的纯小数M转换成R进制数的步骤:

1) M乘以R,记下整数部分

2) 将上一步乘积中的小数部分再乘以R,记下整数部分

3) 重复做第2步,直到小数部分为0或者满足精度要求为止

4) 将各步求得的整数转换成R进制的数码,并按照和运算过程相同的顺序排列起来,即为所求的R进制数。

例:0.85D=(?)H

解:0.85*16=13.6 ……13=D

0.6*16=9.6 ……9=9

0.6*16=9.6 ……9=9

0.85D=(0.D99…)D

例:0.35D=(?)O

0.35*8=2.8 ……2

0.8*8=6.4 ……6

0.4*8=3.2 ……3

0.2*8=1.6 ……1

0.35D=0.2631…)D

3.即有整数又有小数

若十进制数有整数也有小数,则整数和小数分别转换,再求其和即可。

例:11.375D=(?)B

解:

11D=1011B

0.375*2=0.75 ……0

0.75*2=1.5 ……1

0.5*2=1.0 ……1

0.375D=0.011B

故:11.375D=1011.011B

二进制数转换成八进制数或十六进制数

方法:以二进制数的小数点为起点,分别向左、向右每三位(或四位)分一组。对于小数部分,最低位一组不足三位(或四位)时,必须在有效位右边补0,使其足位。然后把每一组二进制数转换成八进制(或十六进制)数,并保持原排序。对于整数部分,最高位一组不足位时,可在有效位的左边补0,也可不补。

1011011111.10011B=(?)O=(?)H

解:1  011  011  111 . 100  110

1   3    3    7   4    6

=1337.46O

10  1101  1111 . 1001  1000

2  D     F    9    8

  =2DF.98H

八进制数或十六进制数转换成二进制数

八进制(或十六进制)数转换成二进制数时,只要把八进制(或十六进制)数的每一位数码分别转换成三位(或四位)的二进制数,并保持原排序即可。整数最高位一组左边的0,及小数最低位一组右边的0可以省略。

例:36.24O=(?)B

3  6 . 2  4

011 110  .  010  100

  =11110.0101B

例:3DB.46H=(?)B

3  D   B 4   6

0011 1101   1011  .  0100  0110

=1111011011.0100011B

基本的数据类型

1字节DBdefine byte

一个字节有8位二进制组成,其最高位是第7位,最低位是第0位。在表示有符号数时,最高位就是符号位。

00001001 9

10001011 11 有符号

=  139 无符号

通常情况下,存储器按字节编址,读写存储器的最小信息单位就是一个字节。

Var_byte db 10011101B

Var_bytes db 41H,42D,61H

2、字DWdefine word

2个字节组成一个字,其最高位是第15位,最低位是第0位。高8位称为高字节,低8位称为低字节 

00101010 00111100

Var_word dw 4512

3、双字DDdefine doubleword

2个字(4个字节)来组成一个双字,其高16位称为高字,低16位称为低字。

双字有较大的数据表示范围,它通常是为了满足数据的表示范围而选用的数据类型,也可用于存储远指针。

Var_dword dd 0F99728H  2H  0ABH

4、四字DQ

4个字(8个字节)组成一个四字类型,它总共有64个二进制位,当然,也就有更大的数据表示范围,但在汇编语言中很少使用该数据类型。

5、十字节DT

10个字节组成一个十字节类型,它总共有80个二进制位。

6、字符串DB

字符串是由若干个字节组成的,字节数不定,通常每个字节存储一个字符。该数据形式是汇编语言程序中经常使用的另一种数据形式。

Char_ABC db A,B,C

String_ABC db ABC

  评论这张
 
阅读(360)| 评论(0)

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018