__ffs 用于找到一个int或者long行最高哪位是1,例如0x8000,就会返回15.代表从第8个bit开始不为0.其源码如下;
static __always_inline unsigned long __ffs(unsigned long word)
{
int num = 0;

#if BITS_PER_LONG == 64
if ((word & 0xffffffff) == 0) {
num += 32;
word >>= 32;
}
#endif
if ((word & 0xffff) == 0) {
num += 16;
word >>= 16;
}
if ((word & 0xff) == 0) {
num += 8;
word >>= 8;
}
if ((word & 0xf) == 0) {
num += 4;
word >>= 4;
}
if ((word & 0x3) == 0) {
num += 2;
word >>= 2;
}
if ((word & 0x1) == 0)
num += 1;
return num;
}
以0x8000,假定没有定义BITS_PER_LONG。
第一步word & 0xffff 不为0,word = b1000,0000,0000,0000 。则num =0.
第二步word & 0xff) 为0,word = b1000,0000 。则num =8.
第三步word & 0xf为 为0 ,word = b1000 则num+=4.则num=12
第四部word & 0x3 为0 ,word = b10则num +=2,则num=14
第五步word & 0x1为0,word = b1则num+=1.则num=15

__ffs 源码分析相关推荐

  1. 【Golang源码分析】Go Web常用程序包gorilla/mux的使用与源码简析

    目录[阅读时间:约10分钟] 一.概述 二.对比: gorilla/mux与net/http DefaultServeMux 三.简单使用 四.源码简析 1.NewRouter函数 2.HandleF ...

  2. SpringBoot-web开发(四): SpringMVC的拓展、接管(源码分析)

    [SpringBoot-web系列]前文: SpringBoot-web开发(一): 静态资源的导入(源码分析) SpringBoot-web开发(二): 页面和图标定制(源码分析) SpringBo ...

  3. SpringBoot-web开发(二): 页面和图标定制(源码分析)

    [SpringBoot-web系列]前文: SpringBoot-web开发(一): 静态资源的导入(源码分析) 目录 一.首页 1. 源码分析 2. 访问首页测试 二.动态页面 1. 动态资源目录t ...

  4. SpringBoot-web开发(一): 静态资源的导入(源码分析)

    目录 方式一:通过WebJars 1. 什么是webjars? 2. webjars的使用 3. webjars结构 4. 解析源码 5. 测试访问 方式二:放入静态资源目录 1. 源码分析 2. 测 ...

  5. Yolov3Yolov4网络结构与源码分析

    Yolov3&Yolov4网络结构与源码分析 从2018年Yolov3年提出的两年后,在原作者声名放弃更新Yolo算法后,俄罗斯的Alexey大神扛起了Yolov4的大旗. 文章目录 论文汇总 ...

  6. ViewGroup的Touch事件分发(源码分析)

    Android中Touch事件的分发又分为View和ViewGroup的事件分发,View的touch事件分发相对比较简单,可参考 View的Touch事件分发(一.初步了解) View的Touch事 ...

  7. View的Touch事件分发(二.源码分析)

    Android中Touch事件的分发又分为View和ViewGroup的事件分发,先来看简单的View的touch事件分发. 主要分析View的dispatchTouchEvent()方法和onTou ...

  8. MyBatis原理分析之四:一次SQL查询的源码分析

    上回我们讲到Mybatis加载相关的配置文件进行初始化,这回我们讲一下一次SQL查询怎么进行的. 准备工作 Mybatis完成一次SQL查询需要使用的代码如下: Java代码   String res ...

  9. [转]slf4j + log4j原理实现及源码分析

    slf4j + log4j原理实现及源码分析 转载于:https://www.cnblogs.com/jasonzeng888/p/6051080.html

最新文章

  1. python3 实现 php serialize 函数
  2. 抖音右上角一个小黄点是什么_抖音用户更喜欢什么样的人设?抖音怎么塑造出一个受人喜欢的人设?抖音人设...
  3. 网络通信:单播、广播、组播
  4. 原来C语言还可以这样实现“泛型编程”!
  5. CSS学习笔记3:选择器及优先级
  6. r语言 分类变量 虚拟变量_R语言中的变量
  7. ASP.NET Core文件上传、下载与删除
  8. java中 static变量和方法到底是存在内存什么区域?
  9. c3p0连接错误 An attempt by a client to checkout a Connection has timed out.
  10. C++如何提高程序效率
  11. sprint3个人总结
  12. 中国生产力促进中心”十四五”规划与发展规模分析报告2022~2028年
  13. linux查看云锁密码命令,Linux安装云锁
  14. 引用还是传值——被打脸后才发现多年的理解是错的
  15. spring boot学习2,日志框架
  16. 【编程原则】预则立,不预则废
  17. 本地腾讯滑块识别DLL/本地通用验证码识别DLL/文字点选/图标点选/本地识别DLL
  18. 理解HTTPS加密安全传输流程
  19. qt实现简易图片转换功能
  20. 关于蓝牙的知识,蓝牙5.0和蓝牙5.2

热门文章

  1. 如何修改Nintendo Switch Dock以获得更好的便携性
  2. html5网页宠物窝,11款融进家装的宠物窝设计 简直萌翻了!!
  3. 物料分类帐环境下:物料下一期间标准价的维护及批准发布时点
  4. java操控手机刷锦鲤看看(一个类似头条的赚钱app)
  5. 【pytorch】时间序列预测 —— 同时预测多个分位点
  6. (附源码)计算机毕业设计ssm高校请假管理系统
  7. 带符号整数的除法与余数
  8. 【幻灯片动画效果制作】Focusky教程 | 设置录音和动画同步
  9. 记录第一个 python项目 外星人入侵小游戏
  10. 纺织ERP_印染ERP软件_指点ERP简介