打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
KEIL C51 实现位数组

KEIL C51 实现位数组

实现位数组的方式很多,下面是<c programming FAQs>中提供的方法:
#include <limits.h>
#define BITMASK(b) (1 << ((b) % CHAR_BIT))
#define BITSLOT(b) ((b) / CHAR_BIT)
#define BITSET(a, b) ((a)[BITSLOT(b)] |= BITMASK(b))
#define BITCLEAR(a, b) ((a)[BITSLOT(b)] &= ~BITMASK(b))
#define BITTEST(a, b) ((a)[BITSLOT(b)] & BITMASK(b))
#define BITNSLOTS(nb) ((nb + CHAR_BIT - 1)/CHAR_BIT)
例子:
1.声明47位的数组
char bitarray[BITNSLOTS(47)];
2.置第23位
BITSET(bitarray, 23);
3.测试第35位
if(BITTEST(bitarray, 35)) ...
4.利用位数组计算素数
#include <stdio.h>
#include <string.h>
#define MAX 100
int main() {
    char bitarray[BITNSLOTS(100)];
    int i, j;
    memset(bitarray, 0, 100);
    for(i = 2; i < MAX; i++) {
        if(!BITTEST(bitarray, i)) {
            printf("%d/n", i);
            for(j = i + i; j < MAX; j += i)
                BITSET(bitarray, j);
        }
    }
    return 0;
}

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
字节翻转
单片机C语言学习
2018.10.9模拟考试
纯c语言实现动态分配多维数组的方法
FORTRAN/C/C++混合编程de总结
算法优化:rgb向yuv的转化最优算法,快得让你吃惊(转)
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服