有关位运算和缓冲区的 问题,求解答

问题描述

有关位运算和缓冲区的 问题,求解答
在利用哈夫曼树进行压缩时,建立好哈夫曼树,得到得到每个叶子节点中的字符编码之后,**_如何使用位运算将编码中的每个位(BIT)设置到一个char类型的位缓冲中,可能多个编码才能填满一个位缓冲,每填满一次,将位缓冲区以单个字节的形式写入文件。_**

解决方案

建议先把需求用个例子说明一下。

解决方案二:
char cBit=0;
cBit= CBit|0x01;
cBit= CBit|0x02;
cBit= CBit|0x04;
cBit= CBit|0x08;
cBit= CBit|0x10;
cBit= CBit|0x20;
cBit= CBit|0x40;
cBit= CBit|0x80;

解决方案三:
http://www.doc88.com/p-8748051352842.html

解决方案四:
这个问题以前没有接触过,学习啦,哈夫曼编码是学习数据结构时候很常见的例子。**_如何使用位运算将编码中的每个位(BIT)设置到一个char类型的位缓冲中,可能多个编码才能填满一个位缓冲,每填满一次,将位缓冲区以单个字节的形式写入文件。_**你这个提问是怎么想出来了呢?

时间: 2024-11-06 19:48:52

有关位运算和缓冲区的 问题,求解答的相关文章

c++-求份C++运算器,需要基本云运算关系运算逻辑运算位运算进制转换功能

问题描述 求份C++运算器,需要基本云运算关系运算逻辑运算位运算进制转换功能 1基本运算功能 主要包括:加.减,乘.除.取余.自增.自减等. 2.关系运算功能 主要包括:大于.大等于.小于.小等于.等于.不等于. 3. 逻辑运算功能 主要包括:与.或.非. 4.位运算功能 主要包括:按位与.按位或.按位异或.按位取反.左移和右移. 5.进制转换功能 主要包括:包括十进制转其他进制.二进制转其他进制 解决方案 我这个别处找的代码,不是我写的.. 解决方案二: http://download.csd

c语言基础-C语言位运算 求大神帮忙

问题描述 C语言位运算 求大神帮忙 题1:编写一个程序,输出一个char类型数据的镜像.(既假如 一个char类型数的二进制码是01100001那输出应为10000110). 解决方案 #include #include char Reverse(char *src) { char *start; char *end; start = src; //printf("%dn",start); end = src + sizeof(char)(strlen(src)-1); char p;

寄存器位运算的与或问题

问题描述 寄存器位运算的与或问题 #define GPIO_BASE (0x7F008000)#define rGPACON (*(volatile unsigned *)(GPIO_BASE+0x00))rGPACON = (rGPACON & ~(0xff<<0)) | (0x22<<0); 对這个有点小蒙:1.~(0xff<<0) = ?2.GPIO_BASE+0x00 0x7F008000 + 0x00是32位的:0111 1110 0000 0000

位运算小结操作

一.前言 输入2 的n 次方: 如果突然要你输入2 的19 次方,你是不是还要想一下呢?敲个524288 多累啊.用位运算:1 << 19 又快又准. 乘除2 的倍数: 千万不要用乘除法,非常拖效率.只要知道左移1 位就是乘以2 ,右移1 位就是除以2 就行了. 比如要算 25 * 4 ,用25 << 2 就好啦. 判断偶数:  a % 2 取模是最常用的判断方法之一.这样要用到除法运算,不好.实际上,还是用位运算解决:a & 1 .效果和a % 2 是一样的,但是要快得多

java位运算应用

位移动运算符: <<表示左移, 左移一位表示原来的值乘2. 例如:3 <<2(3为int型) 1)把3转换为二进制数字0000 0000 0000 0000 0000 0000 0000 0011, 2)把该数字高位(左侧)的两个零移出,其他的数字都朝左平移2位, 3)在低位(右侧)的两个空位补零.则得到的最终结果是0000 0000 0000 0000 0000 0000 0000 1100, 转换为十进制是12. 同理,>>表示右移. 右移一位表示除2.   位运算

PHP位运算 详解

在实际应用中可以做用户权限的应用 我这里说到的权限管理办法是一个普遍采用的方法,主要是使用到"位运行符"操作,& 位与运算符. 位或运行符.参与运算的如果是10进制数,则会被转换至2进制数参与运算,然后计算结果会再转换为10进制数输出. 它的权限值是这样的 2^0=1,相应2进数为"0001″(在这里^我表示成"次方",即:2的0次方,下同) 2^1=2,相应2进数为"0010″ 2^2=4,相应2进数为"0100″ 2^3=8

C语言学习教程第八章-枚举、位运算(3)

位运算 前面介绍的各种运算都是以字节作为最基本位进行的. 但在很多系统程序中常要求在位(bit)一级进行运算或处理.C语言提供了位运算的功能, 这使得C语言也能像汇编语言一样用来编写系统程序.一.位运算符C语言提供了六种位运算符:& 按位与| 按位或^ 按位异或~ 取反<< 左移>> 右移 1. 按位与运算 按位与运算符"&"是双目运算符.其功能是参与运算的两数各对应的二进位相与.只有对应的两个二进位均为1时,结果位才为1 ,否则为0.参与运算的

c语言-C语言中位运算的一个诡异问题

问题描述 C语言中位运算的一个诡异问题 #include<stdio.h> #include<math.h> #include<stdlib.h> #include<string.h> int main() { unsigned short x,n; unsigned short mask; scanf("%hu%hu",&x,&n); mask = (~0>> n); printf("%x"

[大数据量]java移位运算与位运算与数据类型的存储

站在巨人的肩膀上,参考其他博客文章,汇总于此:  1G=1024M=1024K=1024BYTE=8BIT  Java数据类型的存储:(举例说明) 问:int 型的在内存中怎么存储,假设 int a=21:那么a是怎么被存到计算机里的.怎样把 a 变成二进制数. 怎么样把 a 存到 byte[]数组中? 答:int占4个字节,byte是1个字节,每个字节8位. 所以2进制的话,int最多可以表示正负一共2的32次方个数,byte则是2的8次方. e.g. int=21;在计算机中表示为00000