`
whusl
  • 浏览: 101134 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

移位运算(部分笔试题)

 
阅读更多

、x=a/2;等价于x=a>>1;右移则幂次变小
x=a*2;等价于x=a<<1;左移则幂次变大

乘法和移位运算谁更快?按道理来说移位更快,但是现在的编译器都对这个做优化了。
扩展:x*=16,也就是左移4位!x<<=4;

、分段(2段,left&right,初始时 left = 0,right = n-1,center = (left+right)/2):
1、奇数,如1,2,3.=>(left,center),(center+1,right)=>(1,2),(3)
或者,=>(left,center-1),(center,right)=>(1),(2,3)

2、偶数,如1,2=>(left,center),(center+1,right)=>(1),(2)
或者,=>(left,center-1),(center,right)=>wrong!

小结:最好采用(left,center),(center+1,right)这种分法!

三、如何判断一个数是否为2的N次方
最简单的方法是判断x&(x-1)是否为0.why?
如果是2的n次幂,则此数用二进制表示时只有一位是1,其它都是0。减1后,此位变成0,后面的位变成1,所以按位与后结果是0;
如果不是2的n次幂,则此数用二进制表示时有多位是1。减1后,只有最后一个1变成0,前面的 1还是1,所以按位与后结果不是0。
如果给出一个不大的数,如9998判断它是不是2的n次方?我们知道2的n次方增长很快,所以不要被这个数吓着了。已知 210=1024,211=2048,212=4096,213=8192 ,所以可以断定该数不是2的n次方!

四、再议x&(x-1)!

有这样一段小程序,求当x=9999时,函数的返回值是多少?
int get(int x){
int count=0;
while(x){
count++;
x=x&(x-1);
}
return count;
}

于是我们必须要知道对于x来说M=x&(x-1)的值到底是多少?
可惜笔试的时候没做出来,郁闷。转自http://hi.baidu.com/zengzhaonong/blog/item/7fb884509ee30c61853524c2.html
正如文章作者说的,每次x&(x-1)都会将其对应的二进制数中的最右端的1变为0。所以这个函数也就是在算这个二进制数中有多少个1。
如何快速地得到如9999,这样大的数对应的二进制数?
210=1024,211=2048,212=4096,213=8192 ,于是我们可以将9999=8192+1024+512+256+15
然后加起来
10000000000000
10000000000
1000000000
100000000
+ 1111
---------------------
10011100001111
所以有8个1,所以最后得到的返回值为8!

五、快速得到一个数的7倍!,参考http://job.51cto.com/art/201008/218251_1.htm

考察点:乘法较慢,改用移位和加减
做法:(x<<3)-x,左移3位后变为原来的8倍

分享到:
评论

相关推荐

    运算器移位运算实验实验报告.pdf

    运算器移位运算实验实验报告.pdf运算器移位运算实验实验报告.pdf运算器移位运算实验实验报告.pdf运算器移位运算实验实验报告.pdf运算器移位运算实验实验报告.pdf运算器移位运算实验实验报告.pdf运算器移位运算实验...

    带移位运算模型机的设计与实现

    计算机组成原理 带移位运算模型机的设计与实现

    移位运算实验

    移位运算实验报告,逻辑移位,循环移位。计算机组成原理实验报告。

    计算机组成原理实验二-移位运算实验.docx

    计算机组成原理实验二-移位运算实验.docx计算机组成原理实验二-移位运算实验.docx计算机组成原理实验二-移位运算实验.docx计算机组成原理实验二-移位运算实验.docx计算机组成原理实验二-移位运算实验.docx计算机组成...

    C51之移位运算

    C51之移位运算 C51之移位运算是指在C51单片机中实现移位运算的方法。移位运算是一种基本的位运算,通过将二进制数的每一位向左或向右移动来实现数据的移位。在C51单片机中,可以使用RR、RRC、RL、RLC等指令来实现...

    计算机组成原运算器及移位运算器实验报告

    2.了解4位函数发生器74LS181的组合功能,熟悉运算器执行算术操作和逻辑操作的具体实现过程; 3.验证带进位控制的74LS181的功能。 二、实验设备: EL-JY-II型计算机组成原理实验系统一套,排线若干。

    计算机组成原理 实验五 带移位运算模型机的设计与实现

    这是一份个人写的广东工业大学计算机组成原理 实验六 复杂模型机的设计与实现,希望和大家共享一下自己的知识成果,对大家学习有所启发和帮助。

    计算机组成带移位运算实验报告

    计算机组成原理实验,实现函数的时间复杂度分析,思考和小结等,构成完整的实验报告

    计算机组成原理之定点数的移位运算

    "计算机组成原理之定点数的移位运算" 定点数的移位运算是计算机组成原理中的一种重要运算方式。在本节中,我们将详细讲解定点数的移位运算,包括算数移位、逻辑移位和循环移位等。 一、引子 在学习定点数的移位...

    负数移位运算讲解

    文中主要讲解了负数移位的实现过程。

    广东工业大学 计算机组成原理实验5 带移位运算模型机的设计与实现

    "广东工业大学 计算机组成原理实验5 带移位运算模型机的设计与实现" 该实验的目的是熟悉微程序控制器控制模型机的数据通道,掌握 4 条移位指令的使用和编程,学习设计和调试计算机的基本步骤及方法。实验中,学生...

    计算机组成原理 移位运算 .ppt

    本资源对计算机组成原理中的移位运算、十进制运算及逻辑运算进行了系统的概括,涵盖了移位运算的基本概念、移位规则、十进制运算和逻辑运算等内容,对计算机组成原理的学习和研究具有重要的参考价值。

    计算器(可进行移位求余等运算)

    一个简易的计算器(可进行移位求余等运算)

    移位运算器实验报告.docx

    移位运算器实验报告.docx移位运算器实验报告.docx移位运算器实验报告.docx移位运算器实验报告.docx移位运算器实验报告.docx移位运算器实验报告.docx移位运算器实验报告.docx移位运算器实验报告.docx

    计算机组成原理-移位运算.ppt

    计算机组成原理-移位运算 计算机组成原理是计算机科学的基础学科,它研究计算机的硬件结构、工作原理和性能指标。移位运算是计算机运算的基础,它是计算机科学中最基本和最常见的运算操作之一。 移位操作按移位...

    计算机组成原理 课设任务书--基本模型机和带移位运算的模型机设计与实现

    一个很好的计算机组成原理 课设任务书--基本模型机和带移位运算的模型机设计与实现

    JAVA基础之java的移位运算

    对byte 和short类型的值进行移位运算的结果是int 型,而且如果左移不超过31位,原来对应各位的值也不会丢弃。但是,如果你对一个负的byte 或者short类型的值进行移位运算,它被扩大为int 型后,它的符号也被扩展。...

    S7-200SMART移位和循环移位运算指令怎么用?[收集].pdf

    其中,移位和循环移位运算指令是S7-200 SMART中非常重要的一部分。本文将详细介绍S7-200 SMART移位和循环移位运算指令的使用和实现。 一、移位指令 S7-200 SMART移位指令分为左移位、右移位、循环左移位、循环右...

    移位运算器实验报告

    自己刚刚做过实验,很实用哦 内容不是太多,A4纸就三页 但是你懂的,浓缩的都是!!

    广东工业大学计组实验报告带移位运算模型机的设计与实现五

    1.实验目的与要求: (1)熟悉由微程序控制器控制模型机的数据通道。 (2)掌握机器指令的使用和...本实验是在基本模型机的基础上搭接移位控制电路,实现移位控制运算。 带移位模型机数据通道框图如图5-1所示: ……

Global site tag (gtag.js) - Google Analytics