2985|4

389

帖子

0

TA的资源

纯净的硅(高级)

楼主
 

这个函数应该怎么调用呢? [复制链接]



复制代码
可是根据它提供的程序,char_offset表明存储在bit_array数组中的只能是一个位代表一个字符
无法实现直接对位的操作啊!
void set_bit(char bit_array[],unsigned bit_number)
{
        bit_array[char_offset(bit_number)]|=
                1< }

复制代码
  1. unsigned char_offset(unsigned bit_number)
  2. {
  3.         return bit_number/CHAR_BIT;                                        //提高可移植性,使程序不依赖于机器
  4. }

  5. unsigned bit_offset(unsigned bit_number)
  6. {
  7.         return bit_number%CHAR_BIT;
  8. }
复制代码
例如:在主函数中调用
  1. int main(int argc, char* argv[])
  2. {
  3.         char a[]="10010";
  4.         set_bit(a,3);
  5.         printf("%s",a);
  6.         return 0;
  7. }
复制代码
会输出  90010,就是对要操作位在内存中的字节操作;
那怎样才能输出10110呢?

[ 本帖最后由 yaoyong 于 2012-9-7 22:36 编辑 ]
此帖出自编程基础论坛

最新回复

最后我想说的是,不管他的实际目的是什么,这个这个函数都实现地极其恶劣因为他至少犯了一个错误 没有把移位这个操作独立出来,而是和估计和具体应用有关的数组相混淆  详情 回复 发表于 2013-7-29 18:59
点赞 关注
 

回复
举报

1万

帖子

16

TA的资源

版主

沙发
 
void set_bit(char bit_array[],unsigned bit_number)

{

        bit_array[char_offset(bit_number)] |=

                1<
}

请问楼主1<是啥意思啊?
此帖出自编程基础论坛

点评

不好意思,关于代码粘贴没弄好,索性直接文本形式算了...... 应该是移位操作符 修改后能看清楚了吗?  详情 回复 发表于 2012-9-7 22:38
 
个人签名http://shop34182318.taobao.com/
https://shop436095304.taobao.com/?spm=a230r.7195193.1997079397.37.69fe60dfT705yr
 
 

回复

389

帖子

0

TA的资源

纯净的硅(高级)

板凳
 

回复 沙发 ddllxxrr 的帖子

不好意思,关于代码粘贴没弄好,索性直接文本形式算了......
应该是移位操作符
修改后能看清楚了吗?
此帖出自编程基础论坛
 
 
 

回复

7815

帖子

56

TA的资源

裸片初长成(中级)

4
 
bit_offset这玩意不管是宏还是函数都给搞出来。
但看char_ffset就很有问题
1移位没有考虑进位和舍尾
2 从字面意思猜测这个人专门封装了两个函数无非是为了移一个字节时方便,但是,它的操作方法很危险,主要是前面说的 舍尾和进位 但其实这个为方便而封装的函数到底有没方便到什么呢?还是多此一举
鉴于楼主的代码没全看到,不知道目的是什么,所以不好评论
此帖出自编程基础论坛
 
 
 

回复

7815

帖子

56

TA的资源

裸片初长成(中级)

5
 
最后我想说的是,不管他的实际目的是什么,这个这个函数都实现地极其恶劣因为他至少犯了一个错误
没有把移位这个操作独立出来,而是和估计和具体应用有关的数组相混淆
此帖出自编程基础论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表