首页 > 其他分享 >剑指offer——Day21 位运算(简单)

剑指offer——Day21 位运算(简单)

时间:2023-02-03 13:12:53浏览次数:44  
标签:cnt 运算 offer int 题解 代码 Day21

Day21 2023.2.3 位运算(简单)

剑指offer 15. 二进制中1的个数

自己实现

这个题最简单的做法很容易理解,就是执行while(n!=0)循环,然后在循环中n>>=1,并判断如果n&1==1那么就要对计数器加一

代码如下

class Solution {
public:
    int hammingWeight(uint32_t n) {
        int cnt=0;
        while(n!=0){
            if(n&1)cnt++;
            n>>=1;
        }
        return cnt;
    }
};

代码表现

题解

巧用n&(n-1)。由下图可知,每一次通过n&(n-1)都能找到最右边的1并将其转化为0,通过这个方法能够快速锁定每个1的位置并将其转换

代码表现

hint

  • 这种n&(n-1)的做法值得积累

剑指Offer 65. 不用加减乘除做加法

自己实现

wtf。。。这怎么做,看题解了

题解

大体来说是用&, <<, ^(异或)操作来分别实现进位加法和不进位加法

代码如下:(由于C++会有左移得小问题,所以用java来写的)

class Solution {
    public int add(int a, int b) {
        while(b!=0){
            int c = (a&b)<<1;
            a^=b;
            b=c;
        }
        return a;
    }
}

代码表现

hint

  • 这种使用位运算实现加法的方法也值得积累

标签:cnt,运算,offer,int,题解,代码,Day21
From: https://www.cnblogs.com/cspzyy/p/17088844.html

相关文章

  • 空值合并运算符 '??'和可选链 "?."
    空值合并运算符??解决的问题考虑以下场景:letcount=0;alert(count||100);//100count||100首先会检查count是否为一个假值,它是0,确实是假值。所以,||运算......
  • Matlab-运算符
    ✅作者简介:热爱科研的算法开发者,Python、Matlab项目可交流、沟通、学习。......
  • 运算符
    publicclassDemo1{publicstaticvoidmain(String[]args){//自增(自减与自增相似)inta=10;intb=a++;//执行完这行代码后,先给b赋值,再自......
  • 运算符
    运算符:关系运算符:>,<,>=,<=,==,!=,instanceof逻辑运算符:&&,||,!条件运算符:?:扩展赋值运算符:+=,-=,*=,/=//幂运算2^32*2*2=8很多运算,我们会使用一些工具类来操作doublepo......
  • 对一个随机数做运算并顺序输出结果
    packagecom.fqs.demo;importjava.util.Random;publicclassJiaMi{publicstaticvoidmain(String[]args){//比如系统的数字密码是19//......
  • JavaScript逻辑运算符:与(&&)和或(||)
    前置知识:在javascript的逻辑运算中,0、""、null、undefined和NaN都会判定为false,其它都为true或||用于判断运算的操作数可以是任意类型的值。操作数是布尔值时,除了两......
  • MATLAB-算术运算
    ✅作者简介:热爱科研的算法开发者,Python、Matlab项目可交流、沟通、学习。......
  • MATLAB-逻辑运算
    ✅作者简介:热爱科研的算法开发者,Python、Matlab项目可交流、沟通、学习。......
  • 收到offer之后的回复术语
    不去:您好,非常荣幸能收到贵岗的offer,感谢您对我能力的认可,但贵公司岗位要求/薪资结构和我预想还有一定的差距,希望今后有共事的机会,祝您工作顺利! 去:您好,非常荣幸能......
  • 23三元运算符
    packagechapter02;publicclassJava04_Operator04{publicstaticvoidmain(String[]args){//TODO运算符-三元运算符//三元运算符指三个元......