社区
汇编语言
帖子详情
假设一个数为ox01010101,我想求出ox01000000,用最快速的算法
mxfeng
2013-01-02 01:38:39
如何用位操作,实现只保留一个数最高位为1的那个位,其余位的全部清0.
也就是求出一个数X,与之最接近的2的n次方是多少,(上限或下限,均可。)
比如ox01010101,我想求出ox01000000,用最快速的算法
...全文
147
4
打赏
收藏
假设一个数为ox01010101,我想求出ox01000000,用最快速的算法
如何用位操作,实现只保留一个数最高位为1的那个位,其余位的全部清0. 也就是求出一个数X,与之最接近的2的n次方是多少,(上限或下限,均可。) 比如ox01010101,我想求出ox01000000,用最快速的算法
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
申祷无
2013-01-02
打赏
举报
回复
关于我为什么认为查表在很多情况下效率都是最高的: 现在很多的CPU传送指令的指令周期都是1机器周期,而查表一般情况下只需要一条指令。这个在理论上应该是不能再少了。 但同时也应该注意如果用查表法转换,并且表很大的话,建立表的时间是不能忽略的。就算是直接定义的,不是在程序运行过程中生成的话,操作系统加载程序的时候加载这个表也是需要时间的。在这种情况下,只有需要转换大量的数据才能体现出查表法的效率。
申祷无
2013-01-02
打赏
举报
回复
只要改变那个表,就可以分别实现“向上”,“向下”或者“四舍五入”了。
申祷无
2013-01-02
打赏
举报
回复
输入的值是多少位的?如果位数不是很大或者极端要求速度以至于完全不考虑内存占用的话,用xlat吧。感觉查表在很多情况下效率都是最高的,同时占用的内存也是最多的。不过xlat好像不能处理大于256的表,所以如果表比较大的话就只能用基址+偏移的方式查表了。 我刚才大概查了一下,bsr的指令周期挺长的,而且好像是不定的,我查到的是7-72。xlat的指令周期是固定的,是4。不过指令周期这个东西在不同的CPU上可能是不同的,这个只能做一个参考。 表大概是这样的(输入是8位的),这个表还是在程序运行的时候生成比较好: table db 0,1B,10B,10B,100B,100B,100B,100B,1000B,1000B,......10000000B xlat具体是怎么回事你自己查一下吧,基址+偏移的方法是这样的: si为输入,al为输出 mov bx,offset table mov al,[bx+si] 多次转换的话mov bx,offset table是不用多次执行的。 我用的是8086的汇编,MASM 5的语法。
sanae
2013-01-02
打赏
举报
回复
假设ecx是输入eax是输出。。
bsr %ecx, %ecx mov $1, %eax shl %cl, %eax
java:实现遗传
算法
对于某
一个
个体的编码为b1,b2,...,bn,解码后对应的参数x值为: x=a+(b-a)/(2^n-1)sum(bk*2^(k-1)).....k=1,2,...n; (2)个体适应度函数 对于目标函数最大化问题,采用Fitness(f(x))=f(x)-Cmin ,f(x)>Cmin ,...
数据结构与
算法
综合资料库.CHM
第四个下标表示8个方向,最后
一个
下标为1时表示棋子数,为2时表示空格数,如: gStyle(1,2,2,1,1)=3表示与坐标(2,2)在第1个方向上相邻的黑棋棋子
数为
3 gstyle(1,2,2,1,2)=4表示与坐标(2,2)在第1个方向上的最近的...
c语言资料(复习)
个下标表示(x,y),第四个下标表示8个方向,最后
一个
下标为1时表示棋子数,为2时表示空格数,如: gStyle(1,2,2,1,1)=3表示与坐标(2,2)在第1个方向上相邻的黑棋棋子
数为
3 gstyle(1,2,2,1,2)=4表示与坐标(2,2)在第1个...
遗传
算法
类OX交叉选择
算法
的python实现
与背包问题不同,在求解TSP问题时,染色体编码采用整数编码而不是二进制编码,对于每个城市用
一个
整数来编号,
一个
路径就是一条染色体编码。在进行选择运算时,常采用类OX交叉
算法
,其思路为:
假设
父代 A 1250|...
常用的启发式
算法
例如,著名的推销员旅行问题(Travel Saleman Problem or TSP):
假设
一个
推销员需要从南京
出
发,经过广州,北京,上海,…,等 n 个城市, 最后返回香港。 任意两个城市之间都有飞机直达,但票价不等。
假设
公司只给...
汇编语言
21,458
社区成员
41,603
社区内容
发帖
与我相关
我的任务
汇编语言
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
复制链接
扫一扫
分享
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章