非数值数据的示意以及十进制数的二进制编码(BCD)表示

计算机对非数值符号的处理大致分三个过程:字符输入,机内处理,字符输出;这就对应这三种阶段的编码,这里叫做输入码,机内码,字形码,不同阶段可以用 相同的编码技术。这只是我对中文编码的扩展,因为都是非数值符号,所以中文和西文没有什么太大区别。

             这里主要以汉字的处理为主,西文的处理类似。汉字输入码的编码方式大致分四种:流水码(国标码,区位码),音码(全拼,智能ABC),形码(五笔),音形码。汉字机内码是计算机内存储和处理汉字时候用到的编码(GB2312,ascii,utf-8),这种对应关系是在硬盘中或者内存中存储着ascii或者GB2312的码表。汉字的区位码和机内码的对应关系:区位码+A0A0H;这样保证两个字节的中文表示中单字节最高位为1,可以表示出当两个字节时候是表示一个中文还是两个西文字符。汉字字形码,就是输出文字时候的点位,通过01画出字符。

           之前一直在努力弄明白8421BCD码和ascii的关系,今天终于搞明白了。十进制的8421BCD码表示和十进制的二进制数字表示并不一样,例如:0001 1000,当把它视为二进制数时,其值为24;但作为2位BCD码时, 其值为18。又例如0001 1100,如将其视为二进制数,其值为28,但不能当成BCD码,因为在8421BCD码中,它是个非法编码 。当用户输入55的时候计算机用0110101  0110101两个ascii编码来表示55,但是这不是十进制中的55的二进制表示(明显不是),所以计算机会把这两个ascii字符编码的二进制表示转换成十进制的二进制编码表示,也就是8421BCD编码(ascii数字编码的二进制表示去掉高三位便是十进制的二进制编码表示),这时计算机会把十位的5(101)乘与10(1010)得到50(110010),个位的5(101)乘与1(1)得到5(101),然后相加便是十进制55的二进制表示(110111),他的逆过程便是计算机想把110111(55),在控制台显示“55”,计算机在把二进制表示成十进制字符串表示时候先判断这个二进制表示的十进制的最高位是多少,通过连续除于1010直到余数小于1010(10),本例中110111经过这种方式判断为两位,所以:它首先会用110111(55)除于1010(10)等于101(5),然后发现对应于8421BCD中的“5”,然后输出,用110111-101*1010便是101,发现对应于计算机的8421BCD中的“5”,然后输出,这时候便是“55”的表示。

转自:http://www.myexception.cn/program/1644786.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值