使用范围:

gcc : __builtin_functionLastName(x)只适应于无符号整型
但对于有符号正整数:它自动转换无符号整型,计算结果不会影响
具体使用看下面代码注释!!

测试代码:

#include <iostream>
using namespace std;
int lowbit(int x)
{return x&-x;} //x&-x 等价于 x&(~x+1)
int main()
{//gcc : __builtin_functionLastName(x)只适应于无符号整型int x = 26;//11010//x = -26;//计算出错cout<<"计算x = 26(11010)的二进制1的个数,__builtin_popcount(x) = "<<__builtin_popcount(x)<<endl;//计算x的二进制1的个数x = 84;//1010100cout<<"计算x = 84(1010100)末尾0的个数,__builtin_ctz(x) = "<<__builtin_ctz(x)<<endl;//计算x的二进制末尾0的个数x = 204;//11001100cout<<"返回x = 204(11001100)的二进制最后一个1的位置,__builtin_ffs(x) = "<<__builtin_ffs(x)<<"  lowbit(x) = "<<lowbit(x)<<endl;/*__builtin_ffs(x) : 返回x的二进制最后一个1的位置(从后向前数,最后一个1在第几个bit位)lowbit(x) : 返回最后一个1该位置对应的2的幂 的值*/x = 84;unsigned int x1 = 84;cout<<"byte of unsigned int  = "<<sizeof(x1)<<endl;//4个字节cout<<"x = 84(1010100),前置0的个数:"<<__builtin_clz(x)<<" "<<__builtin_clz(x1)<<endl;//前置0的个数(共32位)x = 84,x1 = 204;//1010100  11001100cout<<"x = 84(1010100),x1 = 204(11001100),二进制1的个数的奇偶性:"<<"x:"<<__builtin_parity(x)<<" x1:"<<__builtin_parity(x1)<<endl;//1的个数奇数(1)or 偶数(0)return 0;
}

测试结果:

gcc里的__builtin_..相关推荐

  1. P1582 倒水(二进制)

    https://www.luogu.org/problemnew/show/P1582 P1582 倒水 评测方式 云端评测 标签 难度 普及+/提高 时空限制 1000ms / 128MB 提示:收 ...

  2. cc、gcc、g++、CC的区别概括

    gcc是C编译器:g++是C++编译器:linux下cc一般是一个符号连接,指向gcc:gcc和g++都是GUN(组织)的编译器.而CC则一般是makefile里面的一个名字,即宏定义,嘿,因为Lin ...

  3. linux gcc g++编译命令选项

    gcc/g++在执行编译工作的时候,总共需要4步 1.预处理,生成.i的文件[预处理器cpp] 2.将预处理后的文件不转换成汇编语言,生成文件.s[编译器egcs] 3.有汇编变为目标代码(机器代码) ...

  4. 关于GCC的理解——On the understanding of the GCC

    GCC 有超过100个的编译选项可用. 这些选项中的许多你可能永远都不会用到, 但一些主要的选项将会频繁用到. 很多的 GCC 选项包括一个以上的字符. 因此你必须为每个选项指定各自的连字符, 并且就 ...

  5. Linux cc 和 gcc 的区别概括介绍

    说自己很菜,果然很菜!在想我cc和gcc编译器有什么区别,不知道,咋办?搜索一下!果然让自己长进! 从名字上来看: cc : C Compiler                //在老的Unix上 ...

  6. Linux下GCC报:extern “C“ _declspec(dllexport)相关错误

    在使用GNU工具链时默认是导出函数,并且GCC里不认_declspec(dllexport) 使用条件宏分开: #ifdef WIN32 #define WEYE_UDP_PACKETS_EXTERN ...

  7. GCC编译器和CC编译器的区别

    以下内容源于网络资源的学习与整理,如有侵权请告知删除. 参考博客 Difference Between GCC and CC Compiler - Ask Any Difference Linux新手 ...

  8. c语言里面的 lt gt 和,C语言中的“gt;gt;”和“lt;lt;” - 好库文摘

    先说左移,左移就是把一个数的所有位都向左移动若干位,在C中用< int i = 1; i = i << 2; //把i里的值左移2位 也就是说,1的2进制是000...0001(这里 ...

  9. C语言里的左移和右移运算

    先说左移,左移就是把一个数的所有位都向左移动若干位,在C中用<<运算符.例如: int i = 1; i = i << 2; //把i里的值左移2位 也就是说,1的2进制是00 ...

最新文章

  1. 为什么大公司一定要使用DevOps?
  2. MVC入门学习笔记(十)
  3. 计算机应用基础005,2013年自考《计算机应用基础》模拟题三(5)
  4. Jquery中使用Validate插件使表单验证更加简单
  5. 【数据结构与算法】之深入解析“奇怪的打印机”的求解思路与算法示例
  6. SylixOS异常管理
  7. python求组合数c_科学网—Python 组合函数 C(n,m) - 杨玠的博文
  8. Linux下Mail命令收集
  9. 矩阵论与计算机英语论文,矩阵论翻译论文[8页].pdf
  10. UVA11029 Leading and Trailing【快速模幂+数学】
  11. nacos + springcloud gateway 出现503错误
  12. 【二分查找】详细讲解(C语言折半查找)
  13. Word替换重复的内容
  14. LeetCode-319.灯泡开关
  15. 科学家发现4起黑洞相撞事件,其中最大的一起或为“双重”碰撞
  16. VMware中的虚拟机开启VT,支持KVM
  17. 安卓8.0下的应用安装
  18. 远程服务器返回错误: (500) 内部服务器错误解决办法
  19. 云主机是不是服务器?云主机和服务器有什么区别?
  20. ViewPager中显示图片和播放视频填坑之旅

热门文章

  1. java 81 08,Java更多的库谜题81:烧焦到无法识别
  2. python识别12306验证码_Python3.4实现的12306最新验证码识别
  3. python写mysql脚本_使用python写一个监控mysql的脚本,在zabbix web上加上模板
  4. ubuntu下命令行启动vmware某个虚拟机
  5. 适用于 Python 的 10 大最佳 IDE,你 Pick 哪一款?
  6. Pandas处理数据太慢,来试试Polars吧!
  7. 30秒就能学会一个Python小技巧?
  8. 100 个网络基础知识,看完成半个网络高手
  9. 中文课程!台大李宏毅机器学习公开课2019版上线
  10. java 实现 web 客户端_Java web客户端和服务器端交互的原理