美文网首页
编程珠玑1.2/1.8

编程珠玑1.2/1.8

作者: 孤烛 | 来源:发表于2020-01-04 20:29 被阅读0次

1.2 用位逻辑运算实现位向量

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
/* 设置位向量的第n位为1 */
void Set (char *bitVec, int n) 
{
    bitVec[n / 8] |= 1 << n % 8;
}
/* 读取位向量第n位的值 */
int Get (char *bitVec, int n) 
{
    if (bitVec[n / 8] & 1 << n % 8) {
        return 1;
    } else {
        return 0;
    }
}
void Init (char *bitVec) 
{
    Set(bitVec, 1);
    Set(bitVec, 20);
    Set(bitVec, 8);
    Set(bitVec, 999);
    Set(bitVec, 207);
}

int main ()
{
    char bitVec[125];
    memset(bitVec, 0, sizeof(char) * 125);
    Init(bitVec);
    for (int i = 0;i < 1000;i++) {
        if (Get(bitVec, i)) {
            printf("%d\n", i);
        } 
    }
    return 0;
}

1.8 可以用4bit来表示当前这个号码的状态,为何用4bit来表示呢,因为假设我们针对一个特定的号码来看,他的区号可能有八种情况:

1/8:800 877 888这三种区号都不存在。
3/8:800 877 888这三种区号中只有一种存在
3/8:800 877 888这三种区号中只有两种存在
1/8: 800 877 888这三种区号都存在
因此只要规定好bit位状态和需要表示的实际电话号码存在状态的关系就好了

相关文章

  • 编程珠玑1.2/1.8

    1.2 用位逻辑运算实现位向量 1.8 可以用4bit来表示当前这个号码的状态,为何用4bit来表示呢,因为假设我...

  • 《编程珠玑》之珠玑

    作者:Jon Bentley 本书的作者通过一个一个实际生活中的例子来给引导我们对编程进行思考,虽然在实际工作中我...

  • 编程珠玑

    ## 编写自己的代码库 应该将自己编写的每一个程序都当作一个日后可以重用的库。 * 编写用例,在实现中将计算过程分...

  • 相关书籍

    《大话数据结构》《剑指Offer》《编程之美》《编程珠玑》

  • 《编程珠玑高清》PDF高清完整版-免费下载

    《编程珠玑高清》PDF高清完整版-免费下载 《编程珠玑高清》PDF高清完整版-免费下载 下载地址:网盘下载 备用地...

  • 编程珠玑 笔记

    第一章 开篇 友好的对话 在别人不会问问题时,引导他去问问题也是一个很大的学问。Jon与一个程序员问的问...

  • 编程珠玑-01

    说来惭愧, 大概半年前买的, 在书柜里躺了半年了, 前几天看了几页, 很认真的那种看, 仅仅看了几页, 觉得还是能...

  • 编程珠玑11.6

    今天读了《编程珠玑》的第三章,可能是这本书写的比较早(30年前)的缘故吧,有很多地方感觉不理解。但是在那个时代作者...

  • Linux实操-J2EE定制篇

    1.1 J2EE需要安装的软件 JDK1.8 Tomcat Eclipse MySql 1.2 JDK1.8 升级...

  • xxl-job分布式任务调度平台

    1、安装Jdk1.8+、Maven3.0+、MySQL5.7+ 1.1、安装Jdk1.8+ 1.2、安装Maven...

网友评论

      本文标题:编程珠玑1.2/1.8

      本文链接:https://www.haomeiwen.com/subject/odufactx.html