zoukankan      html  css  js  c++  java
  • 写一个宏,判断整数的某一位是否为1

    //判断一个数的第n位是否为1,n从0开始
    #define IS_ONE(number, n) ((number >> n) & (0x1))
    /*number右移n位, 那么要显示的那一位就到了第0位
    然后number 与 0x1 相与
    如果number第0位为0, 那么相与的结果就是0
    如果number第0位为1, 那么相与的结果就是1
    从而实现某一位是否为1*/

    一个位图数组,unsigned int BIT_MAP[MAXSIZE],写一个宏,判断其中第x位是否为1.
    #define IS_BIT_SET(BIT_MAP, x) (((BIT_MAP[x/sizeof(unsigned int)]) >> (x%sizeof(unsigned int))) & (0x1))

    思路:
    数组的每一个元素是一个int型数据,一个数据占32bit,
    首先由输入的x,求出数组的下标,和此下标中的第几位(0到31),

    比如输入x为95, 95/32 = 2余31
    则对应的是BIT_MAP[2] 的第31位。

    遗留:如果输入的x超过了数组的范围,怎么办呢?

  • 相关阅读:
    React之JSX语法
    Visual Studio Code 使用 Typings 实现智能提示功能
    React.js 之hello word
    Linux命令详解-cd
    Linux命令详解-ls
    linux常用命令
    LINUX系统配置相关
    netsh
    Visual Studio
    乘法算术表
  • 原文地址:https://www.cnblogs.com/suiyuemanbu/p/3683096.html
Copyright © 2011-2022 走看看