剑指offer--3

简介: 前言:继续学习剑指offer!!!面试题10:   这道题相对简单,但要对位运算了解。位运算大体上只有5种运算,总结如下:按位与 “&”:将参与运算的两操作数各对应的二进制位进行与操作,只有对应的两个二进位均为1时,结果的对应二进制位才为1,否则为0。

前言:继续学习剑指offer!!!

面试题10:  

 

这道题相对简单,但要对位运算了解。

位运算大体上只有5种运算,总结如下:

  • 按位与 “&”:

将参与运算的两操作数各对应的二进制位进行与

操作,只有对应的两个二进位均为1时,结果的对

应二进制位才为1,否则为0。

        通常用来将某变量中的某些位清0且同时保留其他位不变。
也可以用来获取某变量中的某一位。
例如,如果需要将int型变量n的低8位全置成0,而其余位
不变,则可以执行:

        n = n & 0xffffff00;

  • 按位或“|”:

按位或运算通常用来将某变量中的某些位置1且保
留其他位不变。
例如,如果需要将int型变量n的低8位全置成1,而
其余位不变,则可以执行:
n |= 0xff;
0xff: 1111 1111

  • 按位异或 “^”
    按位异或运算通常用来将某变量中的某些位取反,
    且保留其他位不变。
    例如,如果需要将int型变量n的低8位取反,而其
    余位不变,则可以执行:
    n ^= 0xff;
    0xff: 1111 1111
  • 左移操作符<<

实际上,左移1位,就等于是乘以2, 左移n位,就等于
是乘以2n。而左移操作比乘法操作快得多。

例如:
9 << 4 相当于9乘16

结果:144

  • 右移操作符 >>

实际上, 右移n位,就相当于左操作数除以2n,并且将
结果往小里取整。

例如:

-25 >> 4 = -2 -25除以16等于负1.几,往小里取整,-2更小
-2 >> 4 = -1
18 >> 4 = 1

#include<stdio.h>

int NumberOf1(int n)
{
    int count=0;
    while(n)
    {   
        if(n&1)
            count++;
        n = n >>1;
    }   
    return count;
}

int main()
{
    int n;
    puts("please input your number:");
    scanf("%d",&n);
    printf("numOf1:%d\n",NumberOf1(n));

    return 0;
}

面试题11:

注:比较简单,不写了。注意位运算比加减乘除快!!!

面试题12:

 

注:要考虑到n很大的情况.

这个学习要先耽误一段时间,有新需求要做,而且还要交接员工离职留下的任务!!!

 

作者: 柳德维

-------------------------------------------

个性签名:独学而无友,则孤陋而寡闻。做一个灵魂有趣的人!

如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,博主在此感谢!

万水千山总是情,打赏一分行不行,所以如果你心情还比较高兴,也是可以扫码打赏博主,哈哈哈(っ•̀ω•́)っ⁾⁾!

目录
相关文章
Airtest的多图查找与两图对比
Airtest的多图查找与两图对比
317 0
|
11月前
|
存储 C语言 C++
【c语言】运算符汇总(万字解析)
今天博主跟大家分享了c语言中各种操作符的功能、使用方法以及优先级和结合性,并且与大家深入探讨了表达式求值的两个重要规则--算数转换和整形提升。学习这些知识对我们的C语言和C++学习都有着极大的帮助。
547 2
|
分布式计算 流计算 Spark
Flink - CountTrigger && ProcessingTimeTriger 详解
Flink 针对 window 提供了多种自定义 trigger,其中常见的有 CountTrigger 和 ProcessingTimeTrigger,下面通过两个 demo 了解一下两个 Trigger 的内部实现原理与窗口触发的相关知识。
1337 0
Flink - CountTrigger && ProcessingTimeTriger 详解
|
6月前
|
存储 JSON Java
深入理解 JWT 中 Claims 的设计及其合理性
JWT(JSON Web Token)中 Claims 是存储用户或业务信息的关键部分。JJWT 库通过 `setClaims` 方法支持传入 `Map&lt;String, Object&gt;` 或 `Claims` 对象,确保灵活性与高效性。本文从源码角度剖析 JWT Claims 的设计思想,介绍三种实现方式:使用 `HashMap`、`DefaultClaims` 和逐个添加声明,并分析其合理性。这种基于 Map 的设计符合 JSON 格式特性,易于扩展且性能优越,为开发者提供灵活的选择,满足不同业务需求。
305 2
|
存储 数据处理 UED
计算机随机存取存储器(RAM )
【8月更文挑战第4天】
3311 8
|
前端开发 JavaScript Python
CPM、CPC
【6月更文挑战第24天】
1093 13
|
Ubuntu
ubuntu引导修复
ubuntu引导修复
190 0
|
算法 Java
什么是EL表达式
EL表达式,全称为Expression Language,意为表达式语言。它是Servlet规范中的一部分,也是JSP2.0规范加入的内容。EL表达式的主要作用是用于在Java Web应用中访问和操作数据,使得JSP页面能够摆脱Java代码块和JSP表达式,实现代码的简化。
395 3
|
算法 数据可视化 定位技术
QGIS+Conda+jupyter玩转Python GIS
QGIS+Conda+jupyter玩转Python GIS
371 1
|
存储 API 开发工具
oss数据解密与下载
阿里云OSS提供服务器端加密(SSE-OSS/SSE-KMS)功能,保证静态数据安全。下载加密对象时,OSS自动解密并返回原始内容。确保下载请求者有相应权限,尤其是使用SSE-KMS时。可通过SDK、图形化工具或编程框架集成下载,发起请求时,OSS自动处理解密,客户端接收解密后的数据。权限、下载方式选择及请求发起是关键步骤。
487 1