社区
C语言
帖子详情
求助,一定及时给分!
bigiron
2003-06-12 06:17:08
有什么办法可以放209bit(是bit,不是byte)的数据,而且存储区一个bit都不能多,怎么办,请指点,分不够可以加的!
另外,C++ 中bool对象的内存结构是怎么样的呀?
谢谢!
...全文
37
22
打赏
收藏
求助,一定及时给分!
有什么办法可以放209bit(是bit,不是byte)的数据,而且存储区一个bit都不能多,怎么办,请指点,分不够可以加的! 另外,C++ 中bool对象的内存结构是怎么样的呀? 谢谢!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
22 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
xjtuzhw
2003-06-13
打赏
举报
回复
试一下把存储区设置一下,或者另建存储区
benbenhuhu
2003-06-13
打赏
举报
回复
bool是8位。
flmttm
2003-06-13
打赏
举报
回复
up
bigiron
2003-06-13
打赏
举报
回复
我给的分少了,所以不太好分,下次一定给多!
bigiron
2003-06-13
打赏
举报
回复
谢谢大家,结贴!
cdocument
2003-06-13
打赏
举报
回复
无法做到,内存都是以字节为存储单位的。
logdzc
2003-06-12
打赏
举报
回复
这是当年高一刚学编程时写的代码,执行位的存取操作,用作一个自定义压缩格式的文件压缩解压
呵呵,现在看惨不忍睹,我把变量名稍改了一下(否则现在我自己都看不懂呵呵),其他不动了
void putbit(int x, FILE* fp)
{
static unsigned int bitcount = 0;
static unsigned char byte = 0;
byte <<= 1;
byte += x;
bitcount ++;
if (bitcount == 8)
{
bitcount = 0;
putc(byte, fp);
byte = 0;
}
}
int getbit(FILE* fp)
{
static unsigned bitcount = 0;
static char byte = 0;
if (bitcount == 0) byte = getc(fp);
int tmpcount = bitcount;
if (++bitcount == 8) bitcount = 0;
return byte >> (7-tmpcount) & 1;
}
短歌如风
2003-06-12
打赏
举报
回复
lifanxi的方法是使用位域,但我们知道位域是超级不可移植的,属于C应用的禁区。存储时应该使用整数数组(快一些)或字节数组(空间效率好一些),设置和读取某一位时用按位逻辑运算和移位运算操作。
我以前在另一个贴子中写过这种实现方法,不过没找到那个贴子,只好再给你写一遍了:
void SetBit(int * Data, int Index)
{
Data[Index / sizeof(int)] |= 1 << (Index % sizeof(int));
}
void ClearBit(int * Data, int Index)
{
Data[Index / sizeof(int)] &= ~(1 << (Index % sizeof(int)));
}
bool GetBit(int * Data, int Index)
{
return (Data[Index / sizeof(int)] & (1 << (Index % sizeof(int)))) != 0;
}
短歌如风
2003-06-12
打赏
举报
回复
开玩笑吧!209不是8的整数倍,而存储空间必须是8的整数倍(比特)。
bool型变量要占一个字节,但用std::vector<bool>可以做到每个元素只用1位。
cloudtarget
2003-06-12
打赏
举报
回复
位段的使用有些规则吧
zhukeke
2003-06-12
打赏
举报
回复
不是不行,我想应该是楼主没把问题说清楚,楼主的意思是不是有一组209bit的数据必须一个接一个地连续存放?请楼主回答。如果是这样,就按我上面的作法吧。
boyfling
2003-06-12
打赏
举报
回复
肯定不行的。
编译器都会字节对齐,bool一般都是一个字节表示。
luixui
2003-06-12
打赏
举报
回复
学习
fullsail
2003-06-12
打赏
举报
回复
而且存储区一个bit都不能多?
这是没有法子作到到的,即使你用汇编,也会有字节对齐的问题。
zhukeke
2003-06-12
打赏
举报
回复
很显然,楼主有一个汇编语言级的结构(该结构占209二进制位), 并且由该结构构成的数据要无缝连接,这只能用按位逻辑运算来实现(用lifanxi的方法只能实现该结构的语法,但不能实现无缝连接)。
oyd
2003-06-12
打赏
举报
回复
int b : 1;
这是位段,指以位为单位定义长度的结构体类型中的成员。
晨星
2003-06-12
打赏
举报
回复
为什么非要“存储区一个都不能多”?这根本无法做到,内存都是以字节为存储单位的(这还不考虑字对齐)。能让内存真正保存一个7位的值,然后另一位借给另一个变量用吗(注意位段并不是变量,使用位段的变量也必然保存在8的倍数个位数的内存单元里)?不能。
CPU真正能真正从内存读7位吗?不能,最多也只能读入8位,然后使用7位。事实上,“真正”读8位都难,64位CPU都出来了。
所以,还是保存216位,然后使用其中的209位吧。
bool结构的存储C++标准没做规定,所以不同的编译器实现可能不一样,但通常是8位。
BinaryWorld
2003-06-12
打赏
举报
回复
编译器在开辟内存的时候不可能会 开辟出非8整数倍bit长度的内存。
每8BIT为BYTE,而系统只位BYTE分配了地址。那么你多出来的位,怎么访问?
可行的办法就是:开辟出8整数倍数的BIT长度的内存,然后最后一段内存可以只使用其中的一部分。
楼上的方法,在下测试了,但不知道b:1是什么语法?在下以前没有见过这样的声明规则。
lifanxi
2003-06-12
打赏
举报
回复
试试
struct aa
{
int a[52];
int b : 1;
};
cwanter
2003-06-12
打赏
举报
回复
bitset试试~
加载更多回复(2)
程序员编程的那些准原则
1、给自己足够的压力去独立解决问题 遇到不懂的问题,要先尽力解决,别动不动就截个图扔在别人求帮忙,上司和同事不是来给你擦屁股的,但是真的搞砸了就要尽快
求助
!!!!!!! 2、要
及时
解决问题,不能累积问题 你隐约感觉会出bug的地方,就
一定
会出bug!!!!!! 3、不改需求其实是一种奢望 产品需求是根据商业需求不断调整的,改需求是再正常不过的事,别抱怨!!!!!!! 4、需求
分
析
一定
要做透彻...
当Python爬虫遭遇HTTP 403错误:这7种破解姿势你
一定
要会!!!
不要用固定User-Agent!准备个UA池随机切换控制请求频率!建议每秒不超过3次请求
及时
处理异常!遇到403先暂停而不是继续硬刚尊重robots.txt!有些网站明确禁止爬虫就不要强行抓取最近帮朋友调试一个爬虫时,发现即使用上了所有方法还是403。最后发现是对方网站启用了TLS指纹验证(这种高级反爬就需要更复杂的对抗手段了)。所以网络爬虫本质上是场攻防战,需要持续学习新技术!(超级重要)最后提醒:技术无罪,但请遵守法律法规和网站的使用条款!爬取公开数据时也要注意不要对目标服务器造成过大压力~
教师回应幼儿
求助
行为的问题及对策研究
摘要 幼儿的
求助
行为是幼儿园比较常见的现象,怎样进行处理,直接影响到幼儿社会性发展。这是由于在
求助
过程中,幼儿可以和被
求助
者,多为教师进行互动,可以使幼儿学会许多解决问题的技巧,最终也就可以促进幼儿社会性的发展。本文选择3岁至6岁幼儿为研究对象,采用观察法,进行探究幼儿在幼儿园里的
求助
行为进行了研究。通过对幼儿
求助
行为的内容、对象、背景、方式和教师回应幼儿
求助
行为这几个部
分
进行表述,全面进行展示幼...
springboot流浪宠物
求助
管理系统 计算机毕设源码55366
本文以springboot为开发技术,实现了一个流浪宠物
求助
管理系统。流浪宠物
求助
管理系统的主要使用者
分
为用户、管理员;管理员功能包括有:首页、轮播图、系统公告、资源管理(宠物百科、
分
类列表)系统用户(管理员、普通用户)模块管理(领养中心、宠物种类、领养申请、志愿者活动、活动类型、志愿者申请)等功能。通过这些功能模块的设计,基本上实现了整个流浪宠物
求助
管理系统的过程......
基于SpringBoot的流浪宠物
求助
管理系统—计算机毕业设计源码55366
本文以springboot为开发技术,实现了一个流浪宠物
求助
管理系统。流浪宠物
求助
管理系统的主要使用者
分
为用户、管理员;管理员功能包括有:首页、轮播图、系统公告、资源管理(宠物百科、
分
类列表)系统用户(管理员、普通用户)模块管理(领养中心、宠物种类、领养申请、志愿者活动、活动类型、志愿者申请)等功能。通过这些功能模块的设计,基本上实现了整个流浪宠物
求助
管理系统的过程。 具体在系统设计上,采用了springboot的结构,后台上采用Mysql数据库,是一个非常优秀的流浪宠物
求助
管理系统。
C语言
70,037
社区成员
243,246
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章