汇编语言中 ascii码转换成二进制数的原理问题
做到了一个题要求完成ascii码转换成二进制数功能,答案说思路是先将ax中两位ascii码先转换成数字,然后ah*10+al,不太理解这个思路的用意或者说是原理,有谁可以...
做到了一个题要求完成ascii码转换成二进制数功能,答案说思路是先将ax中两位ascii码先转换成数字,然后ah*10+al,不太理解这个思路的用意或者说是原理,有谁可以解释一下?
展开
4个回答
展开全部
举个例子 数字1 的ASCII是 31 的二进制是“1111”;
而数字1的二进制只是 “1”;
ASCII码是一种编码方式,如果取得一个“1111”的ASCII码,那么系统就会自动解析为数字1。
数据类型表示数字的类型如int,double 等类型在内存中是以换算的二进制存的,而字符类型等在内存中是以ASCII存的,这个通过查ASCII得到相应的二进制,然后存放于内存。
比如:32767 当作int型 为整数,利用除2取余法得到相应的二进制数存于内存(本来应该存补码,但是正数的补码和原码相同)所占的内存空间跟其对应的数据类型有关,可能还与机器有关,
而32767 当作字符 即“32767”,这时应该分解‘3’,‘2’,‘7’,‘6’,‘7’,然后查对应的ASCII码 对应的值为:0011001 00110010 00110111 00110110 00110111 所以在存放的即为该二进制的组合,且占5个字节的内存。
而数字1的二进制只是 “1”;
ASCII码是一种编码方式,如果取得一个“1111”的ASCII码,那么系统就会自动解析为数字1。
数据类型表示数字的类型如int,double 等类型在内存中是以换算的二进制存的,而字符类型等在内存中是以ASCII存的,这个通过查ASCII得到相应的二进制,然后存放于内存。
比如:32767 当作int型 为整数,利用除2取余法得到相应的二进制数存于内存(本来应该存补码,但是正数的补码和原码相同)所占的内存空间跟其对应的数据类型有关,可能还与机器有关,
而32767 当作字符 即“32767”,这时应该分解‘3’,‘2’,‘7’,‘6’,‘7’,然后查对应的ASCII码 对应的值为:0011001 00110010 00110111 00110110 00110111 所以在存放的即为该二进制的组合,且占5个字节的内存。
展开全部
起先,ax中存放的是两位十进制数的ASCII码,也就是说,ah和al中各自存放有ASCII码为30h~39h的某一个码值。你先将ax减去3030h,将其ASCII码转换成两个十进制数码,然后将存放十位数的ah乘上10,再加上存放个位数的al就变成一个两位的十进制数了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
以12为例AH =31h AL=32h
去ASCII码 AH-'0' ,AL-'0' =>AH=1,AL=2,此时AX=102h,并不是12
经AH*10+AL计算后就得12 了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
例如,大写字符‘A’ 的ASCII码 :
AH = 06d
AL = 05d
AH*10d + AL = 06d*10d +05d = 60d+05d = 65d = 41h = 100 0001B
AH = 06d
AL = 05d
AH*10d + AL = 06d*10d +05d = 60d+05d = 65d = 41h = 100 0001B
追问
那么转换后的10进制数是怎样就转换成2进制数呢?
追答
10进制转二进制--------逐次除以2取余数,直至商为零。
各次的余数由先至后的排列,即二进制数由低位到高位的排列。
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询