四种GCC内置位运算函数

  • int __builtin_ffs (unsigned int x)

    返回x的最后一位1的是从后向前第几位,比方7368(1110011001000)返回4。

  • int __builtin_clz (unsigned int x)

    返回前导的0的个数。

  • int __builtin_ctz (unsigned int x)

    返回后面的0个个数,和__builtin_clz相对。

  • int __builtin_popcount (unsigned int x)

    返回二进制表示中1的个数。

  • int __builtin_parity (unsigned int x)

    返回x的奇偶校验位,也就是x的1的个数模2的结果。

此外,这些函数都有对应的usigned long和usigned long long版本号,仅仅须要在函数名后面加上l或ll就能够了。比方int __builtin_clzll。

此外,基于稀疏表(Sparse Table)的RMQ问题,能够使用 __builtin_clz函数进行预处理。

时间: 2024-08-08 12:54:37

四种GCC内置位运算函数的相关文章

gcc内置原子操作函数

最近在用户态下突然需要用到原子变量,又不想自己编译boost,思来索去,无意中竟发现gcc还有这一组内置函数. //先做操作,再返回变化后的值 type __sync_fetch_and_add (type *ptr, type value); type __sync_fetch_and_sub (type *ptr, type value); type __sync_fetch_and_or (type *ptr, type value); type __sync_fetch_and_and 

JavaScript函数的四种存在形态

函数的四种存在形态: 1.函数形态 2.方法形态 将函数赋值给某一个对象的成员,那么就称为方法 3.构造器形态 4.上下文形态 1.函数形态: var foo = function() { alert(this); //this是window }; 2.方法形态: o = {}; o.foo = foo; //将函数foo赋值给对象o的foo属性 o.foo(); //弹出的是object,此时的this表示object var lib = { test:function() { alert(t

函数的四种调用模式

函数的四种调用模式 1.函数模式 特征 就是一个简单的函数调用,函数名前面没有任何的引导内容 this含义 this在函数模式中表示全局对象,在浏览器中是windjow对象 2.方法模式 特征 方法一定是依附与一个对象,将函数赋值给对象的一个属性,那么就成为了方法 this含义 this在方法模式调用中表示所依附的这个对象 3.构造器调用模式 与方法模式的this的区别 由于构造函数知识给this添加成员,没有做其他事情,而方法也可以完成这个操作,就this而言,构造函数与方法没有本质区别 特征

GCC内联汇编入门

原文为GCC-Inline-Assembly-HOWTO,在google上可以找到原文,欢迎指出翻译错误. 中文版说明 由于译者水平有限,故译文出错之处,还请见谅.C语言的关键字不译,一些单词或词组(如colbber等)由于恐怕译后词不达意,故并不翻译,由下面的单词表代为解释,敬请见谅. 英文原文中的单词和词组: operand:操作数,可以是寄存器,内存,立即数. volatile:易挥发的,是C语言的关键字. constraint: 约束. register: 本文指CPU寄存器. asm:

SQL的四种连接

SQL的四种连接-内连接.左外连接.右外连接.全连接   今天在看一个遗留系统的数据表的时候发现平时查找的视图是FULL OUT JOIN的,导致平时的数据记录要进行一些限制性处理,其实也可以设置视图各表为右外连接并在视图上设置各列的排序和筛选条件就可以达到效果. 联接条件可在FROM或WHERE子句中指定,建议在FROM子句中指定联接条件.WHERE和HAVING子句也可以包含搜索条件,以进一步筛选联接条件所选的行.     联接可分为以下几类: 1.内联接(典型的联接运算,使用像 =  或

四种java代码静态检查工具

[转载]常用 Java 静态代码分析工具的分析与比较 转载自 开源中国社区 http://www.oschina.net/question/129540_23043 1月16日厦门 OSC 源创会火热报名中,奖品多多哦 »   简介: 本文首先介绍了静态代码分析的基本概念及主要技术,随后分别介绍了现有 4 种主流 Java 静态代码分析工具 (Checkstyle,FindBugs,PMD,Jtest),最后从功能.特性等方面对它们进行分析和比较,希望能够帮助 Java 软件开发人员了解静态代码

点击交互的四种处理

1.概述 游戏也好,程序也好.仅仅有能与用户交互才有意义. 手机上的交互大致能够分为两部分:点击和输入. 当中点击更为重要,差点儿是游戏中所有的交互.在Cocos2d-x 3.0中,更改了dispatch机制.同一时候增加了两种新的交互形式:listener 和touchEvent回调.加上先前版本号中的点击函数回调.与重写layer层的touch消息响应.构成了一个相对完整的交互模式.先上一张Demo的图: 2.四种点击 1.函数回调 函数回调是最简单的响应形式,一直以来被用于MenuItem

Cocos2d-x 3.0 点击交互的四种处理

1.概述 游戏也好,程序也好,只有能与用户交互才有意义.手机上的交互大致可以分为两部分:点击和输入.其中点击更为重要,几乎是游戏中全部的交互.在Cocos2d-x 3.0中,更改了dispatch机制.同时加入了两种新的交互形式:listener 和touchEvent回调.加上先前版本中的点击函数回调,与重写layer层的touch消息响应,构成了一个相对完整的交互模式.先上一张Demo的图: 2.四种点击 1.函数回调 函数回调是最简单的响应形式,一直以来被用于MenuItem中的点击处理.

关于gcc内置函数和c隐式函数声明的认识以及一些推测

最近在看APUE,不愧是经典,看一点就收获一点.但是感觉有些东西还是没说清楚,需要自己动手验证一下,结果发现需要用gcc,就了解一下. 有时候,你在代码里面引用了一个函数但是没有包含相关的头文件,这个时候gcc报的错误比较诡异,一般是这样:[math.c:6:25: 警告:隐式声明与内建函数‘sin’不兼容 [默认启用]].这个错误网上大量博客都在说需要包含XXX.h文件,但是没有人解释这个错误信息为什么这样表达.什么是隐式声明,什么是内建函数,我就纠结了. 隐式声明函数的概念网上有相关的资料,