1、十进制 转 二进制
1.1、整数十进制87 转换为 二进制为 1010111
1.2 、小数十进制0.125 转为 二进制 为 0.001
使用乘2取整法,一直乘到没有小数
2、二进制 转 十进制
2.1、二进制1010111 转换为 十进制
2.2、 二进制小数0.001 转 十进制
3、循环队列 计算长度通用公式:
front:表示队首
rear:表示队尾
M:表示队列容量
队列长度 = (rear - front +M)% M
+M:防止rear - front时出现负数
%M:防止+M后长度大于队列容量
如图:rear=1 , front=5 , M=6
队列长度 = (1 - 5 + 6)% 6 = 2
4、哈夫曼树
哈夫曼树是由n个带权叶子节点构成的所有二叉树中 带权路径长度最短的二叉树,又称为 最优二叉树。
所以:构造哈夫曼树就是找最小的权重进行组合,例如:
{4,5,8,9,11,13}
路径长的权重越小,值才会越小,所以权重小的在最下面。
5、大顶堆、小顶堆
大顶堆:父节点大于等于左右两个子节点
小顶堆:父节点小于等于左右两个子节点
6、原码、反码、补码、移码
正数的原码、反码、补码相同,移码是将补码符号位取反。
负数的反码,原码的符号位不变,其它位取反。
负数的补码,反码最后意外加1。
负数的移码,是将补码符号位取反。
(左边第一位为符号位,1表示正数,0表示负数)
例如机器字长为8,十进制1、-1的原码、反码、补码、移码如下:
原码 | 反码 | 补码 | 移码 |
00000001 | 00000001 | 00000001 | 10000001 |
10000001 | 11111110 | 11111111 | 011111111 |
补码的一个特殊值:当符号位为1其余位都为0是,它表示整数2^n-1(2的n-1次方,n为机器字长),如10000000 ,2^8-1,即此时的符号位1既表示负数,又表示数值