zoukankan      html  css  js  c++  java
  • 常见位运算

    常用

    __builtin_ffs(x)

    返回x的最后一位1是从后向前第几位

    __builtin_popcount(x)
    返回x的二进制下1的个数

    x&-x

    只保留最后一位1的二进制

    x = x & (x - 1)

    清零最低位的1

    x & 1

    判断奇偶

    x |= 1 << n

    将第n位置1

    x &= !(1 << n)

    将第n位置0

    x ^ (1 << (k - 1))

    对x的第k位取反

    for(int i = x;i;x&(i - 1))

    遍历所有x的1的子集,如5的子集:[1,4,5]。3的子集:[1,2,3]

    x >> n & 1

    判断第n位的奇偶

    进阶

    __builtin_parity(x)
    返回x的二进制下1的个数的奇偶性

    __builtin_clz(x)
    返回x的二进制下前导的0的个数

    __builtin_ctz(x)
    返回x的二进制下末尾的0的个数

    x & (~0 << n)

    将最后n位变成0

    x & (x + 1)

    去掉右边连续的1

    x & (x ^ ( x - 1))

    去掉右起第一个1的左边

    (x ^ (x + 1) >> 1)

    取右边连续的1

  • 相关阅读:
    1163
    1162
    1154
    Qt532_QWebView做成DLL供VC/Delphi使用_Bug
    Qt532__std::numeric_limits<qint64>::min();
    Qt532_WebKit_SSL问题
    Qt532_自定义QWebView_01
    HTML解析
    Qt5_pro_02
    Qt5需要的_libstdc++6_4.7.2-5_???.deb
  • 原文地址:https://www.cnblogs.com/yvzhu/p/14721631.html
Copyright © 2011-2022 走看看