首页 > 其他 > 详细

高效位运算:__builtin_系列函数

时间:2021-02-21 23:38:15      阅读:66      评论:0      收藏:0      [点我收藏+]

一系列很好用的函数?时间复杂度大概是 \(O(1)\)

int __builtin_ffs (unsigned int x)
  • 返回x的最后一位1的是从后向前第几位,比如114514(11011111101010010)返回 2。

int __builtin_clz (unsigned int x)
  • 返回前导的 0 的个数。

int __builtin_ctz (unsigned int x)
  • 返回后面的 0 个个数,和 __builtin_clz相对,比如1919810(111010100101101000010)返回 1。

int __builtin_popcount (unsigned int x)
  • 返回二进制表示中1的个数,比如1919810(111010100101101000010)返回 10。

int __builtin_parity (unsigned int x)
  • 返回x的奇偶校验位,也就是x的1的个数模2的结果,比如1919810(111010100101101000010)返回 0。

这些函数都有相应的 usigned longusigned long long 版本,只需要在函数名后面加上 lll 就可以了,比如 int __builtin_clzll

鸣谢:高效位运算 __builtin_系列函数——Yuer-

高效位运算:__builtin_系列函数

原文:https://www.cnblogs.com/Silymtics/p/14426336.html

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