沙巴体育app|沙巴体育公司|沙巴体育平台| welcome!!

当前位置: 主页 > 礼包中心 >

计算int型数据的二进制方法中——1的个数

时间:2018-10-06 08:08来源:未知 作者:admin 点击:
松法壹:使用整顿型数据摒除法的特点,经度过相摒除和判佩余数的值到来剖析1的个数. 比如:1011 0110 第壹次摒除以2,商为 1011 011,余为 0. 第二次摒除以2,商为 1011 01 ,余为 1. 关于

  松法壹:使用整顿型数据摒除法的特点,经度过相摒除和判佩余数的值到来剖析1的个数.

  比如:1011 0110

  第壹次摒除以2,商为 1011 011,余为 0.

  第二次摒除以2,商为 1011 01 ,余为 1.

  关于二进制操干,对数字摒除以2,原到来的数字就会增添以壹个0,假设缺乏数,则标注皓以后位置拥有壹个1.

  代码如次:

  时间骈杂度:O(n)

  松法二:使用位操干,摒除以二相当于>>(右移)壹位,又经度过&操干符,逐位终止判佩

  &: 1&1 -> 1

  0&1 -> 0

  1或是0,&1邑是其本身,因此使用&1对整顿数的每壹位终止判佩.

  代码如次:

  时间骈杂度:O(Log2n)

  松法叁:在位操干符&的基础上,&(num-1)

  &(num-1) 比较 &1 的更加处在于:直接找到最左边的1终止判佩.

  比如:1011 1010

  第壹次&(num-1),1011 1010 & 1011 1001 -> 1011 1000

  第二次&(num-1),1011 1000 & 1011 0100 -> 1011 0000

  代码如次:

  时间骈杂度:O(M)(M为1的个数)

  松法四:当空换时间,分顶操干

  以壹字节长的数据为例,却以把0~255的情景整顿个陈列出产到来。此雕刻种做法供的文思是——采取当空换时间的方法,陈列所无情景并直接给出产值。

  时间骈杂度:O(1)

  松法五:当空换时间,查表法

  典型的当空换时间的算法,把0~255中“1”的个数直接存放储在数组中,num干为下标注。

  当空换时间的做法,是为了得到高的时间效力,条是应当根据还愿效实到来取舍。

  时间骈杂度:O(1)

  松法五:位操干,(考虑到正数)数字终止左移操干<<,&(1<<31)

  考虑到正数,终止>>操干之后,左边的标记位壹直在补养1,因此调理为向左移<<,又 &(1<<31)到来终止逐位判佩。

  代码如次:

  时间骈杂度:O(n)

Copyright @ 2011-2017 Power by DedeCms