标签:
bit编码表示
我们都知道8bit=1byte,32bit=4byte=integer这种表示,但是为什么32bit是一个integer呢?
1. 数值
通常,我们对byte进行操作是通过数值操作的,也是最贴近bit。比如说,1byte=8bit=0-256的正整数类型。
2. 字符
假设我们有一张0-256的字符表,来分别对应0-256的数值,那么就可以映射这8bit的数据表示了。
关于id压缩的问题
在java中,我们通常使用UUID来完成全局唯一ID生成,但是这种生成机制会出现一个问题,就是ID长度过长。
我们可以使用一些手段来进行压缩这个id。
从原理上来讲,UUID,其实是长度为128bit的数据。
1.10进制
10进制可以表示3bit长度,则128bit需要43长度10进制数据来表示。
2.16进制
16进制可以表示4bit长度,则128bit需要32长度的16进制数据来表示,也就是现在JAVA的表示法。生成如{550E8400-E29B-11D4-A716-446655440000}
这样子的UUID,其中“-”可以去除掉。
3.Base64
Base64 采用64个字母表达一个含义的算法,也就是说,可以表示6bit长度,这6bit长度组合成的数值,都有唯一的字母和它对应。那么128bit需要长度为22的字符来表示。
标签:
原文地址:http://www.cnblogs.com/darkgem/p/4876843.html