五取二码
五取二码(英语:two-out-of-five code),又称标准25码,是一种恒重码,恰好提供了两比特的十种可能组合,常使用五比特来表示数字。[1]每一个比特都分配了一个权重,所有比特相加就得到了预期的值,而0除外。
编码标准
根据美国联邦标准1037C:
- 每一位数字都应该都应该由五比特的二进制数表示,其中两比特为一种,被称为“一”(ones),另外三比特为另一种,被称为“零”(zeros),
- 通常分配给每一位比特的权重是0-1-2-3-6。而在这种规则下,0被编码为01100;严格来说,之前规定的0-1-2-3-6只是一种助忆法。[2]
在这样的权重下,对于绝大多数数字都只有唯一的编码方式,但是3却有两种:10010的0+3和01100的1+2。于是前者用于编码数字3,而后者则用于代表无法表示的0。
应用
IBM 7070、IBM 7072和IBM 7074电脑都使用这种编码。这类机器的每个字共由10个数字和1个符号标识构成,数字的表示使用二取五码,并使用与电信标准相同的0-1-2-3-6权重。其中的符号标识使用三取二码编码,用来表示文数字(A)、负数(-)或正数(+);当被复制到某个数字上时,这三比特会被放置在第0、3、4位上(从而相对应产生了数字值3、6和9)。[3][4]
五取二码的一个变体是美国邮政总局的POSTNET条形码,用于表示美国邮政编码,方便自动邮件排序和路径规划设备。该条码使用两条长条作为“一”,三条短条作为“零”。而每个比特的权重则是7-4-2-1-0。同样0是特别编码的,使用原本会产生11的7+4组合(即11000)。这种方法同样也在北美电话多频信令和交叉开关系统中使用。[5]
邮政总局的邮政文数编码方法(PLANET)也使用了同样的权重,但所用条的高度则是相反的。[6]
Code39条码使用了1-2-4-7-0的权重(即最低有效位最先,奇偶校验位最后),并用条的宽度表示,但该条码还在条的间距中编码了两位额外的信息。对于数字编码,使用|| ||||间距(即0100)。[7][8]
下表展示了使用不同五取二码系统编码数字0-9的方式:
校验
必须设置两个比特位的要求比奇偶校验更严格;与所有恒重码一样,五取二码不仅可以检测到任何单比特错误,还可以检测到任何单向错误——即所有单个比特错误都是单一类型的情况(全部是0→1或全部是1→0)。
参见
参考资料
- ^ Military Handbook: Encoders - Shaft Angle To Digital (PDF). United States Department of Defense. 1991-09-30 [2020-07-25]. MIL-HDBK-231A. (原始内容存档 (PDF)于2020-07-25) (英语). (NB. Supersedes MIL-HDBK-231(AS) (1970-07-01).)
- ^ 本条目引用的公有领域材料来自General Services Administration的文档《Federal Standard 1037C》。
- ^ Svigals, J. IBM 7070 data processing system. ACM Press. 1959. doi:10.1145/1457838.1457879 (英语).
- ^ 7070 Data Processing System Reference Manual (PDF). bitsavers.informatik.uni-stuttgart.de. [2024-07-17] (英语).
- ^ Vintage Telephone Equipment Museum — XBR #5 MTF Relay Equip. SimpleThinking.com. (原始内容存档于2006-03-16) (英语).
- ^ PLANET Barcode. www.neodynamic.com. [2024-07-19] (英语).
- ^ CODE 39 and Codabar. www.keyence.com. [2024-07-19] (英语).
- ^ MIL-STD-1189 Standard Department of Defense Barcode Symbology (PDF). 1989-08-10 [2024-06-30]. (原始内容存档 (PDF)于2024-07-01).