正整数变长编码转换程序
试题名称:变长编码
时间限制:1.0 s 内存限制:128.0 MB
【问题描述】 小明学习了原码、反码、补码后,发现常用小整数用4字节补码存储太浪费,找到了一种正整数的变长编码方式,规则如下:
- 对于给定的正整数,首先将其表达为二进制形式。例如,0₁₀=0₂,926₁₀=1110011110₂。
- 将二进制数从低位到高位切分成每组7bit,不足bit的在高位用0填补。例如,0₂变为0000000的一组,1110011110₂变为0011110和0000111的两组。
- 由代表低位的组开始,为其加入最高位:如果这组是最后一组,最高位填0;否则填1。于是,0的变长编码为00000000一个字节,926的变长编码为10011110和00000111两个字节。
【输入描述】 输入第一行,包含一个正整数N。约定 0≤N≤10¹⁸。
【输出描述】 输出一行,输出N对应的变长编码的每个字节,每个字节均以2位十六进制表示(A-F使用大写字母),两个字节间以空格分隔。
样例输入1 0
样例输出1 00
样例输入2 926
样例输出2 9E 07
样例输入3 987654321012345678
样例输出3 CE 96 C8 A6 F4 CB B6 DA 0D
本题为编程题,提交代码并运行通过测试点后判分。
正在加载题目数据…
子题
该题型需在试卷/作业中作答,单题练习暂不支持
答案解析