首页 > 其他 > 详细

写一个宏,判断整数的某一位是否为1

时间:2014-04-24 16:48:59      阅读:474      评论:0      收藏:0      [点我收藏+]

//判断一个数的第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超过了数组的范围,怎么办呢?

写一个宏,判断整数的某一位是否为1,布布扣,bubuko.com

写一个宏,判断整数的某一位是否为1

原文:http://www.cnblogs.com/suiyuemanbu/p/3683096.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!