GENMASK_ULL 和GENMASK,产生high和low之间全是1的值
2017-06-19 11:31
771 查看
GENMASK_ULL(39, 21) 这行执行后的值等于0x000000ffffe00000,简单说就是将39和21 之间的bit置为1.对应的GENMASK 是产生32 bit的mask
源码如下:
#define GENMASK(h, l) \
(((~0UL) << (l)) & (~0UL >> (BITS_PER_LONG - 1 - (h))))
#define GENMASK_ULL(h, l) \
(((~0ULL) << (l)) & (~0ULL >> (BITS_PER_LONG_LONG - 1 - (h))))
与之对应的是可以通过下面两个宏,来移位
#define BIT(nr) (1UL << (nr))
#define BIT_ULL(nr) (1ULL << (nr))
源码如下:
#define GENMASK(h, l) \
(((~0UL) << (l)) & (~0UL >> (BITS_PER_LONG - 1 - (h))))
#define GENMASK_ULL(h, l) \
(((~0ULL) << (l)) & (~0ULL >> (BITS_PER_LONG_LONG - 1 - (h))))
与之对应的是可以通过下面两个宏,来移位
#define BIT(nr) (1UL << (nr))
#define BIT_ULL(nr) (1ULL << (nr))
相关文章推荐
- 产生low--high之间的随机数。
- 写一个函数DeleteRange删除单链表中结点的值在low 和high之间的结点
- 写一个函数DeleteRange删除单链表中结点的值在low 和high之间的结点
- 写一个函数DeleteRange删除单链表中结点的值在low 和high之间的结点
- 动态规划在概率论中的应用:产生N种不同结果的概率之间的联系
- C语随机产生20个正整数存入数组a中,且每个数均在1000-9999之间(包含1000和9999)。对数组进行排序,要求按每个数的后三位的大小进行升序排列,然后取出满足此条件的前10个数放入数组b中,
- 随机产生20个正整数存入数组a中,且每个数均在1000-9999之间(包含1000和9999)。对数组进行排序,要求按每个数的后三位的大小进行升序排列,然后取出满足此条件的前10个数放入数组b中,如果
- c++中怎么产生0-1之间的随机数
- FW:0到1之间的随机数是怎么产生的
- Codeforces Round #437 (Div. 2 E. Buy Low Sell High 先买后卖 贪心
- 定义一个int型的一维数组,包含40个元素,用来存储每个学员的成绩,循环产生40个 0~100之间的随机整数,将它们存储到一维数组中,
- 利用Random类产生5 个1-30之间(包括1和20)的随机整数。
- Kafka:High level consumer vs. Low level consumer
- Garbage Collection Optimization for High-Throughput and Low-Latency Java Applications--转载
- 如何去除html代码标签之间换行产生的空格
- C#作业:利用Random类产生10个[10,99]之间的随机数,并将这10个随机数在列表框中显示出来,每个数占一项。用户选择某项后,在右边标签中显示所选内容
- Unbuffered low-level IO and Buffered high-level IO
- java产生65~90之间的数
- Sencha touch Panel之间的跳转(如不使用TabPanel或者Carousel控件而产生跳转的动画效果)
- 地理信息系统 - ArcGIS - 高/低聚类分析工具(High/Low Clustering ---Getis-Ord General G)