Zigzag 压缩小整数
zigzag 是一个简单好用的小整数压缩算法。
原理
现在一般的计算机都是 32 位或者 64 位机了,每个数据的表示长度和范围都比较多。一个常见的数据类型 int
一般占 4 个字节,但是在实际使用时,数字并不会很大,经常不会超过几万(当然要看实际情况),比如下面几个例子
number: 23
bit: 0000 0000 0000 0000 0000 0000 0001 0111
number: -33
bit: 1111 1111 1111 1111 1111 1111 1101 1111
通过观察可以发现,小正数的左侧有大量的 0,小负数的左侧有大量的 1。zigzag 做的就是将左边的冗余数据全部换为 0,便于后续压缩。
正数
拿 23 举例
- 将数字左移一位:
0000 0000 0000 0000 0000 0000 0010 1110
- 符号位加到最后一位(正数符号位为 0 不用操作)
得到了最后的压缩结果:0000 0000 0000 0000 0000 0000 0010 1110
负数
拿 -33 举例
- 左移一位:
1111 1111 1111 1111 1111 1111 1011 1110
- 符号位加到最后一位:
1111 1111 1111 1111 1111 1111 1011 1111
- 除最后一位全部取反:
0000 0000 0000 0000 0000 0000 0100 0001
得到了最后的压缩结果:0000 0000 0000 0000 0000 0000 0100 0001
解码
Z i g z a g − 1 ( n ) Zigzag^{-1}(n) Zigzag−1(n) = (n << 1) ^ -(n & 1)
实现
uint32_t EncodeInt(int32_t number) {return number < 0 ? (((uint32_t)(-number)) * 2 - 1) : number * 2;
}int32_t DecodeInt(uint32_t number) {return (number >> 1) ^ -(number & 1);
}
下图是测试数字 -23 的结果:
Zigzag 压缩小整数相关推荐
- Zigzag小整数压缩算法
Zigzag小整数压缩算法 Zigzag压缩算法 算法思路 代码实现 整数转Zigzag数据 ZIgzag数据转整数 Zigzag压缩算法 日常用到的整数通常为小整数,在二进制存储中包含大量的高位0, ...
- python求5_python(五)——运算符,小整数对象池
1.成员运算符,判断某个东西是否在某个东西里包含:in,not in name = "abcd" if "ac" inname:print("ok&q ...
- python整数池_【Python】Python中神奇的小整数对象池和大整数对象池
小整数对象池 整数在程序中的使用非常广泛,Python为了优化速度,使用了小整数对象池, 避免为整数频繁申请和销毁内存空间. Python 对小整数的定义是 [-5, 256] 这些整数对象是提前建立 ...
- php源代码压缩,PHP_PHP 源代码压缩小工具,使用方法:(在命令行运行) 复 - phpStudy...
PHP 源代码压缩小工具 使用方法:(在命令行运行) 复制代码 代码如下: php compactor.php DESTINATION.php SOURCE.php 下载: compactor.php ...
- python小整数池与大整数池
在python中定义变量会有:id,type,value.对于==比较的是value,对于is比较的是id. 因此,对于相同value的变量,它的type相同,但是它的id值可能不一样.对于相同id的 ...
- 巧用TreeSet求解第k小整数(洛谷P1138题题解,Java语言描述)
题目要求 P1138题目链接 分析 第K小整数应该是比较经典的问题啦,但我们也可以利用现成的数据结构去完成轻松处理. 既然还要去重,那不妨--嘿嘿嘿--TreeSet万岁!! 把元素全打进去就完成了去 ...
- Python的小整数对象池
1. 小整数对象池 整数在程序中的使用非常广泛,Python为了优化速度,使用了小整数对象池, 避免为整数频繁申请和销毁内存空间. Python 对小整数的定义是 [-5, 257) 这些整数对象是提 ...
- HDU2561 第二小整数【水题+序列处理】
第二小整数 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Subm ...
- 路径压缩_实战|python GUI压缩小程序
说到Python,我们常常想到的就是一个小窗口,黑黢黢的cmd窗口运行一下代码. 就像下图: 那Python可不可以做出来具有界面的程序呢?就像这样: 答案是可以的,那我们就要说一下Python GU ...
最新文章
- 域名怎么设置非80端口_深信服网关怎么设置端口映射
- 人工智能与健康社会系列调研(一):人脸识别与公共卫生
- Android传感器编程带实例
- python虚拟环境搭建mac_mac搭建python virtualenv虚拟环境并使用 - 李金龙
- 【模式识别】Fisher线性判别实验报告之MATLAB仿真
- mseq matlab,Matlab生成M序列
- win7下装linux虚拟机,win7怎么在虚拟机安装linux系统|win7搭建linux虚拟机的方法
- PlaySound error
- android des 加密
- 阿里巴巴的合伙人制度!
- 运行 vue-typescript-admin-template 报错 error Command failed with signal “SIGABRT“. 切换node版本
- CRM客户信息管理系统
- java 订单减库存_下单减库存
- 腾讯收购Foxmail的意图
- 新型勒索软件Phobos利用弱安全性***目标
- Cg学习记录002 之Uniform参数
- 时间轮(TimeWheel)的设计与实现
- 斯泰因梅茨-电路向量法的创始人
- create sequence 序列号
- A Transformer-based System for English Named Entity Recognition 基于Transformer的英语命名实体识别系统