zoukankan      html  css  js  c++  java
  • 基本算法_位运算_lowbit

    lowbit运算

    lowbit(n)定义为非负整数n在二进制表示下“最低位的1及后面的所有0”构成的数值。比如二进制10011111010的lowbit就是最后两位10。

    那么我们如何得到lowbit的值呢?

    首先:取反。

     ~ 10011111010

     = 01100000101

    然后:+1

       01100000101+1

    = 01100000110

    我们会发现,此时只有lowbit与原二进制相同,此时再与原数字相与即可得到lowbit(n)

    综上可得lowbit的运算公式

      lowbit(n) = n & ( ~ n + 1 ) 

    又在补码中,~n+1= - n,所以

      lowbit(n) = n & (- n)

    那lowbit有什么应用呢?我们可以求得一个数字二进制中所有1的个数,从而得到0的个数……

    只需要不断把n的值赋为n-lowbit( n )即可~

  • 相关阅读:
    swift
    swift
    ios
    Swift
    swift
    swift
    /var/log/cron
    Django 数据传递
    HTML 属性
    HTML 元素
  • 原文地址:https://www.cnblogs.com/CuteAbacus/p/9464358.html
Copyright © 2011-2022 走看看