`
insertyou
  • 浏览: 901069 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

位运算 优化运算速度——已发《电脑报》

阅读更多

求职不怕考

pcw-chendx@vip.sina.com

与编程相关的招聘,都会准备很多考题,一不小心考生就在考题上栽了跟头,特别是没有多少工作经验的应届毕业生,往往回答得过于理论化,很难令考官满意。为此,我们特意推出本系列,通过对真实考题的分析让大家在回答考题时有更多的实用性,让考官满意,顺利找到工作。

位运算 优化运算速度

爪哇米工作室 陈跃峰

位运算在语言基础学习中比较枯燥,所以很多学生朋友未深入学习,也没有实际应用该基础知识,但是在实际的项目开发中,位运算由于其运算的速度优势,在很多的领域被广泛应用,所以在实际的招聘考试中,位运算的考题比较常见。

招聘题目:请写出求23次方最快的方法。

答案A2x2x2

答案B1 << 3

题目答案:B

为什么答案是B

答案A是计算23次方的数学方法,通过十进制运算方式实现题目要求的结果,但是在执行效率上无法满足题目的要求。为什么这种方法无法满足题目的要求呢?这就要从计算机的运算模式说起了。

计算机的运算模式是以二进制为基础,所以十进制运算在计算时会被转换成二进制再进行运算,而转换过程就会导致运行速度降低。计算23次方最快的方法应该是使用位运算中的移位运算符,通过二进制移位实现,这种方法可以提高运算速度。

通过这个题目,考官既考查了应聘者是否对程序的执行效率有深刻的认识,也考查应聘者是否具备位运算的相关知识。位运算在程序开发中非常常见,合理使用位运算可以提高程序的执行效率,所以我们平时使用的软件大多数都用到了位运算操作。下面我们来看看位运算操作在实际开发中是如何被应用的。

位运算存储数据

利用位运算存储数据,主要是为了减少程序占用的内存。以int数据为例子,如果按照十进制的方式存储数据,一个32位的int变量只能存储一个数值,而如果使用二进制方式存储数据(缺点是只能存储01两个数据)则可以存储32个数据,将极大的节约内存。

例如,在一个int变量的从右侧开始倒数第2位存储数据,则存储和读取数据的代码如下所示:

int bData = 0;

//存储数值1

bData = bData | (1 << (2 - 1));

//存储数值0

bData = bData & (~(1 << (2 - 1));

//读取数据

int n = bData & (1 << (2 - 1));

点评:在该代码中,将需要存储的数据(01)存储在变量bData的倒数第二位中,所以在存储时,则只需要将倒数第二位的数值改变,其他位的数值不改变即可。所以在存储1时,不论bData的数值是多少,只需要和二进制数据10进行位或运算就可以将倒数第二位置1,而需要存储0时,则需要bData0xfffffffd进行位与运算,即可达到清零倒数第二位的目的。

需要注意的是,有些可能会认为在存储数值0时,会使用如下的代码实现:

bData = bData | (0 << (2 - 1));

其实这样是错误的,因为0无论左移多少位都还是0,这样在进行位或运算时,01位或得到的结果会是1,无法实现设置对应的位为0的目的,所以需要使用以上的代码进行实现。

异或位运算简单加密

利用位运算的计算速度快,以及异或的特性(和同一个数字异或两次还是自身),可以用来简单加密数据,且加解密的速度会非常快。这种加密方式强度比较低,但是可以用于一般的加解密任务。

例如,假设密匙是数字123,则加解密一个byte数组的代码如下:

byte[] b = {1,2,3,5,6};

byte key = 123;

//依次加密的代码

for(int i = 0;i < b.length;i++){

b[i] = (byte)(b[i] ^ key); //利用异或加密

}

//解密的代码

for(int i = 0;i < b.length;i++){

b[i] = (byte)(b[i] ^ key); //利用异或解密

}

点评:在该代码中,对数组b使用密匙key进行加密,加密的过程是将数组b中每个元素和key进行异或,加密以后的数据可以在实际应用中进行存储或网络传输,而解密时的操作和加密时一样,使用这种简单的加密方式虽然保密性不高,但是加解密的速度确实是很值得称赞的。

分享到:
评论

相关推荐

    电子功用-平压模切烫金机微电脑控制装置

    《电子功用-平压模切烫金机微电脑控制装置》是针对印刷包装行业中常见的一种设备——平压模切烫金机的专业技术资料。本文将深入探讨该控制装置的工作原理、功能特点、操作流程以及常见问题与解决方案。 一、工作...

    CPUCooL.rar

    "CPU CooL"是一款专为解决这一问题而设计的软件,它致力于帮助用户优化CPU工作状态,降低温度,从而保护硬件并提升电脑的运行效率。 CPU CooL的命名巧妙地将"CPU"和"Cool"结合,直指其主要功能——为CPU降温。这款...

    阿里GPT测评:难道AI摩尔定律时代真的来了?

    电脑报参与了“通义千问”的定向邀测,短短几天内,感受到了中国大模型「以日为进」的成长速度。 阿里云大模型“通义千问”亮相 从OpenAI 的ChatGPT到百度的文心一言,同AI对话成功挑起人类的好奇心,而就在人们为...

    2013年计算机一级考试题库.pdf

    1. 计算机的特点:电子计算机以其运算速度快、计算精度高、高度自动化而著称。它们不是具有高度智能思维方式的实体,而是根据编程指令执行任务的机器。 2. 计算机分类:按照处理信息的形态,计算机可分为数字计算机...

    单片机课程设计报告_温、湿度智能测控系统.doc

    单片机课程设计报告——温、湿度智能测控系统 在单片机课程设计中,构建一个温湿度智能测控系统是一项重要的实践任务。这样的系统通常涉及到传感器技术、微控制器编程、数据处理以及实时监控等多个方面的知识。下面...

    电子工程师必备经验笔记

    - **基本结构**:运算放大器拥有两个输入端——同相输入端和反相输入端,以及一个输出端。部分高端型号还配备了额外的引脚用于改善稳定性或提高性能。 - **工作模式**:运算放大器可以通过不同的反馈网络实现不同的...

    网络游戏-用于驱动远程用户接口的家庭网络系统及其方法.zip

    《网络游戏-用于驱动远程用户接口的家庭网络系统及其方法》这篇资料深入探讨了现代网络游戏中的一个重要技术领域——家庭网络系统和其驱动远程用户接口的方法。在当今数字化社会,网络游戏已经成为人们休闲娱乐的...

    电子政务-井下局扇风机控制电路.zip

    在这个特定的压缩包文件"电子政务-井下局扇风机控制电路.zip"中,我们可以看到一个与电子政务相关的专业领域——井下局扇风机控制电路的应用。 井下局扇风机是煤矿安全生产的重要设备,主要用于提供新鲜空气,排除...

    本科论文-矿用超声波物位传感器设计(软件).doc

    这是一种广泛应用的微控制器,它集成了CPU、RAM、ROM、定时器/计数器等多种功能,为整个传感器系统提供了运算和控制的基础。通过编程,它可以生成40KHz的方波,这是驱动超声波发射探头工作的关键,也是物位测量的...

    数字技术的发展历程

    随着芯片上元件和布线的缩小,芯片的功耗降低而速度大为提高。最新生产的微处理器的时钟频率高达。 数字技术的发展历程与模拟电路一样,经历了由电子管,半导体分立器件到集成电路的过程。由于集成电路的发展非常...

    QNX针对ADAS和自动驾驶推出全新软件平台.pdf

    此外,该平台能够接入ADAS技术供应商生态系统,提供互补的硬件和软件解决方案,从而加快产品上市速度。 赛普拉斯半导体公司宣布扩展其车用产品组合,帮助汽车制造商将以往只属于豪华车型的高科技系统移植到主流车型...

    散热风扇生产 专有名词

    在深入解析散热风扇生产的专有名词之前,我们首先需要明确,散热风扇作为电脑和其他电子设备中用于降低温度、保障设备稳定运行的重要组件,其生产和组装过程中涉及了大量的电子元器件和技术术语。下面将对部分关键词...

    计算机基础精华

    ### 计算机基础精华——IT面试必备知识点详解 #### 操作系统及Linux **1. 进程与线程** - **同步机制** - 同步机制是指多个进程或线程之间为了协调共享资源的访问而采取的一系列措施。常见的同步机制包括互斥锁...

Global site tag (gtag.js) - Google Analytics