5.4的习题:编写一组函数,实现维数组,函数原型如下:

//指定位设置为1
void set_bit(char bit_array[], unsigned bit_number); //指定位清零
void clear_bit(char bit_array[], unsigned bit_number);

//指定位清零,否则设置为1
void assign_bit(char bit_array[], unsigned bit_number, int value); //参数指定位置为1返回真,为0返回1
int test_bit(char bit_array[], unsigned bit_number);

每个函数第一位是字符数组,实际存储所有的位,第二位参数用于标示,要访问的位,函数的调用者要防止这个值过大,超过数组边界。

//字符偏移
unsigned int char_offset(unsigned bit_number)
{
return bit_number / CHAR_BIT;
} //bit位偏移
unsigned int bit_offset(unsigned bit_number)
{
return bit_number % CHAR_BIT;
} void set_bit(char bit_array[], unsigned bit_number)
{
bit_array[char_offset(bit_number)] |= 1 << bit_offset(bit_number);
} void clear_bit(char bit_array[], unsigned bit_number)
{
bit_array[char_offset(bit_number)] &= ~(1 << bit_offset(bit_number));
} void assign_bit(char bit_array[], unsigned bit_number, int value)
{
if (value != 0) {
set_bit(bit_array, bit_number);
}
else {
clear_bit(bit_array, bit_number);
}
} int test_bit(char bit_array[], unsigned bit_number)
{
//对该bit位进行与操作,如果是1则结果还是 1<< (bit_number % CHAR_BIT)
unsigned isZero = bit_array[bit_number / CHAR_BIT] & (1 << (bit_number % CHAR_BIT));
if (isZero == (1 << (bit_number % CHAR_BIT))) {
return TRUE;
}
return FALSE;
}

  

最新文章

  1. Listener监听器与Filter过滤器
  2. [POJ1003]Hangover
  3. 贵州大学iPhone、Android(安卓)项目助跑计划!!!
  4. Ubuntu ENet 的下载和编译
  5. Android 菜单(OptionMenu)大全 建立你自己的菜单
  6. 利用ItextPdf、core-renderer-R8 来生成PDF
  7. 使用jquery获取ul的li的值赋值
  8. PXE+kickstart无人值守安装CentOS 6
  9. Mybatis源码分析-BaseExecutor
  10. 【Kafka源码】处理请求
  11. 前端加密传输 crypto-js AES 加密和解密
  12. mysql--表数据操作
  13. 就是要用Vim写Vue
  14. Just Oj 2017C语言程序设计竞赛高级组A: 求近似值(矩阵快速幂)
  15. js call 理解
  16. udp套接字及利用socketserver模块实现并发以及并发编程
  17. 《C#从现象到本质》读书笔记(五)第5章字符串第6章垃圾回收第7章异常与异常处理
  18. 【转】 Apk文件及其编译过程
  19. vs2017_enterprise正式版离线安装包bt下载
  20. [iOS问题归总]iPhone上传项目遇到的问题

热门文章

  1. NOIP2012国王游戏
  2. Netron开发快速上手(二):Netron序列化
  3. 在iOS APP中使用H5显示百度地图时如何支持HTTPS?
  4. Servlet和JSP
  5. 梦想成真,喜获微软MVP奖项,微软MVP FAQ?
  6. 让JavaScript回归函数式编程的本质
  7. jquey on
  8. 在渲染前获取 View 的宽高
  9. Python学习笔记 之 递归、二维数组顺时针旋转90&#176;、正则表达式
  10. 【Codeforces717F】Heroes of Making Magic III 线段树 + 找规律