一、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运算器移位运算实验...
计算机组成原理 带移位运算模型机的设计与实现
移位运算实验报告,逻辑移位,循环移位。计算机组成原理实验报告。
计算机组成原理实验二-移位运算实验.docx计算机组成原理实验二-移位运算实验.docx计算机组成原理实验二-移位运算实验.docx计算机组成原理实验二-移位运算实验.docx计算机组成原理实验二-移位运算实验.docx计算机组成...
2.了解4位函数发生器74LS181的组合功能,熟悉运算器执行算术操作和逻辑操作的具体实现过程; 3.验证带进位控制的74LS181的功能。 二、实验设备: EL-JY-II型计算机组成原理实验系统一套,排线若干。
这是一份个人写的广东工业大学计算机组成原理 实验六 复杂模型机的设计与实现,希望和大家共享一下自己的知识成果,对大家学习有所启发和帮助。
计算机组成原理实验,实现函数的时间复杂度分析,思考和小结等,构成完整的实验报告
文中主要讲解了负数移位的实现过程。
一个简易的计算器(可进行移位求余等运算)
C51之移位运算
广东工业大学 计算机组成原理实验5 带移位运算模型机的设计与实现
移位运算器实验报告.docx移位运算器实验报告.docx移位运算器实验报告.docx移位运算器实验报告.docx移位运算器实验报告.docx移位运算器实验报告.docx移位运算器实验报告.docx移位运算器实验报告.docx
一个很好的计算机组成原理 课设任务书--基本模型机和带移位运算的模型机设计与实现
对byte 和short类型的值进行移位运算的结果是int 型,而且如果左移不超过31位,原来对应各位的值也不会丢弃。但是,如果你对一个负的byte 或者short类型的值进行移位运算,它被扩大为int 型后,它的符号也被扩展。...
自己刚刚做过实验,很实用哦 内容不是太多,A4纸就三页 但是你懂的,浓缩的都是!!
1.实验目的与要求: (1)熟悉由微程序控制器控制模型机的数据通道。 (2)掌握机器指令的使用和...本实验是在基本模型机的基础上搭接移位控制电路,实现移位控制运算。 带移位模型机数据通道框图如图5-1所示: ……
这是大三的课程设计,我们老师说要有任务书,目录,封面,正文,都有,下了直接打印就可以了。
基于C语言、线性表的 二、八、十、十六进制转换 及 加运算、左右移位运算、乘法运算 的科学计算器设计,主要涉及数据结构相关的知识。详细介绍见文章:...
计算机组成原理之定点数的移位运算
本程序使用与初级接触C编程人员,可使用与二进制输出处理——循环左移位运算,亲笔操刀。