以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 C/C++编程思想 』  (http://bbs.xml.org.cn/list.asp?boardid=61)
----  求各位高手帮我解释一下代码(关于C++的)  (http://bbs.xml.org.cn/dispbbs.asp?boardid=61&rootid=&id=30972)


--  作者:jinzhi123
--  发布时间:4/20/2006 6:37:00 PM

--  求各位高手帮我解释一下代码(关于C++的)
关于位向量类的


#ifndef BITVECT_H_
#define BITVECT_H_
class BiVector{
unsigned char *bytes;
int Bits,numBytes;
public:
BitVector();
BitVector(unsigned char*init,int size=8);
BitVector(char* binary);
~BitVector();
void set(int bit);
void clear(int bit);
int read(int bit);
int bits();
void bits(int sz);
void print(const char* msg=" ");
};
#endif
#include<stdio.h>
#include<assert.h>
#include<stdlib.h>
#include<string.h>
#include<limits.h>
const unsigned char highbit=1<<(CHAR_BIT-1);
BitVector::BitVector(){
numBytes=0;
Bits=0;
bytes=0;
}
BitVector::BitVector(unsigned char* init,int size){
numBytes=size;
bits=numBytes*CHAR_BIT;
bytes=(unsigned char*)calloc(numBytes,1);
assert(bytes);
if(init==0)return;
for(int index=0;index<numBytes;index++)
for(int offset=0;offset<CHAR_BIT;offset))
set(index*CHAR_BIT;offset++)
if(init[index]&(highbit>>offset))
set(index*CHAR_BIT+offset);
}
主要想请教一下那个CHAR_BIT是干什么用的还有那个const unsigned char highbit=1<<(CHAR_BIT-1);这是什么意思最主要看不懂的就是这一段for(int index=0;index<numBytes;index++)
for(int offset=0;offset<CHAR_BIT;offset))
set(index*CHAR_BIT;offset++)
if(init[index]&(highbit>>offset))
set(index*CHAR_BIT+offset);
}
有那位高手知道这一段代码的意思的请跟我联系本人不胜感激谢谢
我的QQ是287643380


--  作者:卷积内核
--  发布时间:4/21/2006 9:14:00 AM

--  
CHAR_BIT : 8 Number of bits in a char 一种数据类型,以bits计算的.下面程序就是简单的循环加移位,还有设定偏移量.没什么特别东西啊.
--  作者:jinzhi123
--  发布时间:4/21/2006 10:23:00 AM

--  
那位大虾能不能把那个循环移位的代码跟我解释一下吗谢谢
for(int index=0;index<numBytes;index++)
for(int offset=0;offset<CHAR_BIT;offset))
set(index*CHAR_BIT;offset++)
if(init[index]&(highbit>>offset))
set(index*CHAR_BIT+offset);
}
--  作者:jinzhi123
--  发布时间:4/22/2006 10:06:00 AM

--  
顶一下
W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
62.500ms