UTF-48编码(2)

这是一种计算机字符编码,它用48比特(6字节)为单位。用6字节表示2个汉字,或是5个ASCII字符。它还可以支持全世界5651种语言,并争取做到各种语言编码长度尽可能相同。

对于小于128个字符的语言,使用7比特模式,全世界有5651种语言,用13比特表示lang字段,剩下的48-13=35比特,有35=7×5,可以表示5个字符。例如,英语就采用7比特模式。当字符数不足5个的时候,用-1占位,如表示abc,则记为a b c -1 -1。用二进制表示-1,即7个1,1111111。所以,7比特模式可以表示127个符号,ASCII编码DEL将失效。

对于更复杂的语言,采用8比特模式,有48-13=35,35=3+8×4,可以表示4个字符,并且剩余3比特。取8个这样的语言,把它们合并,这样可以让出7个语言项,供其他语言使用。

xxxxxx.xxxxxxx.yyy[8][8][8][8]
这里的13比特x是标准的语言项,3比特y是扩展语言项,高位x保持一致,低位y有8种变化。

还有9比特模式,它可以表示29-1=511个符号。有35+1=9×4,这需要“借”1比特,如何借比特呢?合并2个语言项,可以借出1比特。同理,合并4个语言项可以借出2比特,合并8个语言项可以借出3比特,等。

有些语言拥有接近1024个符号,这需要使用10比特模式。有35=5+10×3,用6字节表示3个字符,并且剩余5比特。凑够32个这样的语言,占用1个语言项,可以让出31个语言项。

同理,有11比特模式,35=2+11×3。

有12比特模式,35+1=12×3,这需要借1比特。

也许没有需要用13比特表示的语言?8191个符号?

汉语有超过10万个字符,需要17比特,有35=1+17×2。用6字节表示2个汉字,另外有双unicode模式,即21比特模式,35+7=21×2,借7比特!合并128个语言项,以实现借7比特。所以,汉语没必要使用17比特模式,它直接使用21比特模式。

每个48比特编码的高13位用于记录语言项,但也不总是这样,因为有“借比特”和“还比特”存在,语言项的宽度在13比特上下波动。最开始的128个语言项合并成一个,用来表示双unicode模式。

48=6+21×2,所以有二进制形式:
000000.[21比特][21比特],双unicode模式,汉语在此
000001.0000000.[7][7][7][7][7],五ASCII模式,英语在此
之后的语言项还没安排,待定。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值