算法篇:位运算基本操作

news/2024/6/15 23:36:39 标签: python, 算法, leetcode, java, 动态规划

算法:

本章介绍位操作的基本操作,具体操作见下面的几类具体题目:

异或操作,与操作,或操作和偏移操作

题目1: 计算位1的个数

https://leetcode-cn.com/problems/number-of-1-bits/

代码实现:

func hammingWeight(num uint32) int {
   count := 0
   for i := 0; i < 32; i++ {
     if num&(1<<i) != 0 {
         count++
     }
   }
   return count
}
// 算法: 
// 利用单个bit上面的 a&1=1 表示a=1;a&1=0 表示a=0

执行结果:

题目2:2的幂

https://leetcode-cn.com/problems/power-of-two/

代码实现:

func isPowerOfTwo(n int) bool {
    if n == 0 {
        return false
    }
    return n&(n-1) ==0
}
// 算法:
// 2的幂转换成二进制,如下图所示,所以可以利用n&(n-1) == 0 来判断
// 0000 0001  ->1
// 0000 0010  ->2 
// 0000 0100  ->4
// 0000 1000  ->8
// 0001 0000  ->16
// 0010 0000  ->32
// 0100 0000  ->64
// 1000 0000  ->128

执行结果:

题目3: 两个整数的和

https://leetcode-cn.com/problems/sum-of-two-integers/

代码实现:

func getSum(a int, b int) int {
    // b作为进位,当为0的时候,说明计算结束
    for b != 0 {
    sum := a ^ b // 不进位的加法
    carry := (a & b) << 1 // 计算进位
    a = sum
    b = carry
  }
  return a
}
// 算法:
// 1. 异或操作,a^b 得到的结果,a+b不进位的和的数值
// 2. 与操作,a&b向右偏移1位,表示的就是进位数值
// 3. 循环操作,直到进位数为0,表示计算结束了。

执行结果:

题目4:

https://leetcode-cn.com/problems/swap-numbers-lcci/

代码实现:

func swapNumbers(numbers []int) []int {
    numbers[0] ^= numbers[1]
    numbers[1] ^= numbers[0]
    numbers[0] ^= numbers[1]
    return numbers
}
// 算法:
// 交换a,b,位操作步骤:a ^=b; b ^= a; a ^= b;

执行结果:


http://www.niftyadmin.cn/n/873066.html

相关文章

算法篇:位运算进阶(二)

算法转换成前面算法篇&#xff1a;位运算异或的使用(一)中&#xff0c;两位相同的数异或为0&#xff0c;转换成3位数的"异或"操作位0&#xff0c;也就是说我们需要实现同一个bit位的3个1&#xff0c;操作为0就可以&#xff0c;将问题转换为对如何实现同一bit位的三个…

算法篇:摩尔投票法的使用

算法&#xff1a;典型的摩尔投票法使用场景摩尔投票法分为两个阶段&#xff1a;抵消阶段和计数阶段。1. 抵消阶段&#xff1a;两个不同投票进行对坑&#xff0c;并且同时抵消掉各一张票&#xff0c; 如果两个投票相同&#xff0c;则累加可抵消的次数&#xff1b; 2. 计数阶段&a…

算法篇:数的转换

算法&#xff1a;这类算法的核心&#xff0c;在于负数的处理&#xff0c;也就是用到补码的转换&#xff0c;num ((-num)^0xffffffff)1。对于不同进制的转换&#xff0c;采用取余数的方式&#xff0c;来进行操作。对于不同数的转换&#xff0c;利用 a^b 来获取不同的数值&#…

算法篇:求1的个数

算法&#xff1a;核心在于单个数字的1的个数的计算&#xff0c;其他的题目都是基于这个基础来做的操作。题目1:https://leetcode-cn.com/problems/number-of-1-bits/代码实现&#xff1a;func hammingWeight(num uint32) int {count : 0for i : 0; i < 32; i {if num&(1…

MyEclipse 6.0 代码提示

MyEclipse 6.0 代码提示的设置 MyEclipse 选择 Windows ->Preperences ->General ->keys 找到 word completion的快捷键 把原alt/删掉&#xff01;//必须 把Content Assist 的快捷键 改成alt/ 或者你想改的其他快捷键

后续公众号知识点整理内容公布

非常感谢大家的投票&#xff0c;其中有1/8的朋友参与了投票&#xff0c;这里再次感谢配合&#xff0c;没有投票的童鞋们下次记得投票噢&#xff5e;目前架构知识&#xff0c;算法篇和Go语言相差不多&#xff0c;在前3里面&#xff0c;c处于第4。根据这个投票结果&#xff0c;后…

java连接odbc网址_JAVA连接ODBC

网上的资料,呵呵,谢谢那位仁兄了,又学到一点点本程序是JAVA通过ODBC连接到SQL SERVER2000上面的一个数据库的TEST表,并输出TEST表中的所有内容//package lesson0;import java.io.BufferedReader;import java.io.InputStreamReader;import java.sql.*;public class ODBCBridge {…

创建56个民族数据库表SQL语句

创建56个民族数据库表SQL语句 Sql代码 CREATE TABLE [dbo].[NATION] ( [CODE] [char] (2) NOT NULL PRIMARY KEY , [NATION] [varchar] (20) ) INSERT INTO NATION VALUES(01,汉族) INSERT INTO NATION VALUES(02,蒙古族) INS…