2的幂的总和是包括的单独的功率

时间:2016-03-30 11:29:24

标签: math

所以,我们有一些数字,即2的权力之和:

例如$("#comments-form").submit(function(e) { $('#comments-form .form-control').removeClass('#comments-form message-error'); $.post("comments-send.php", $('#comments-form').serialize(), function(data) { if (data.status === 'ok') { $("#comments-form .message-success").removeClass('hidden').velocity({ opacity : 1 }); $("#comments-form .button-submit").addClass('button-transparent'); $('#comments-form .form-control').val(''); setTimeout(function() { $("#comments-form .message-success").velocity({ opacity : 0 }, function() { $(this).addClass('hidden'); }); $("#comments-form .button-submit").removeClass('button-transparent'); }, 3000); } else { $.each(data.errors, function(i, e) { $('.' + i).addClass('#comments-form message-error'); }); } }, 'json'); e.preventDefault(); }); $("#comments-form").on('keyup', '.contact-form', function() { var that = this; if ($(this).val() !== '') { $(this).removeClass('message-error'); } else { $(that).addClass('message-error'); } });

有没有办法知道,这笔金额中包含2的单独权力?

例如,包括32(2的幂为5)。

但是8(2的幂2)不是。

这有什么公式吗?

1 个答案:

答案 0 :(得分:2)

是。只需检查

if (n & (1 << i)) {
   it is included
}

其中(1 << i)表示2^i

在您的特定情况下,您需要if (308 & (1 << 5)) { /* ... */ }查看32=2^5

我现在已经阅读了迟来的评论。我不认为有一个独立于表示的公式(我的意思是closed-form expression)。

当然有一个明显的算法来检查数字中是否包含2^i,其中包含“如果我们要将2^i写为n,则必须显示数字n两个权力的总和“。 (请注意,这主要是计算int k = 0; while (n > 0) { if (k == i && n % 2 == 0) { /* contained */ } k++; n /= 2; } 的二进制表示形式,已经在计算机中以二进制形式表示。)

def require_uid(fn):
    def check_uid(**kwargs):   
        cookie_uid = request.get_cookie('cookieName', secret='cookieSignature')

        if cookie_uid:
            //do stuff with a user object
            return fn(**kwargs)
        else:
            redirect("/loginagain")

    return check_uid