首页 > 其他 > 详细

1-x在二进制上,第w位为1的个数

时间:2020-02-09 00:09:00      阅读:86      评论:0      收藏:0      [点我收藏+]

\(x\%2^{w+1}\)一共有\(2^{w+1}\)情况,

  • \([0,2^w)\)\(w\)位为\(0\)
  • \([2^w, 2^{w+1})\)\(w\)位为\(1\)

那么在\(w\)为上为\(1\)的情况有\(2^w\)种,\[ans =x/2^{w+1} * 2^w + max(x\%2^{w+1} -2^w+1, 0)\]

ll get(ll x, ll w){
    if(x < (1ll<<w)) return 0; 
    ll ans = (x / (1ll<<(w+1))) * ((1ll<<w) );
    ll tmp = x % (1ll<<(w+1));
    ans += max(tmp - (1ll<<w) + 1, 0ll);
    return ans;
}

1-x在二进制上,第w位为1的个数

原文:https://www.cnblogs.com/zhuyou/p/12285509.html

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