![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
代码优化
文章平均质量分 76
mathe
0.54364331210052407755147385529445
展开
-
计算阶乘的 18 位非零尾数
阶乘不用解释吧,阶乘的 18 位非零尾数需要简单解释一下。阶乘的十进制结果中末尾都会有很多个数字 0 (5以下的除外),去掉这些连续的 0 之后最后 18 位数字即是这里所说的 18 位非零尾数。之所以称这为“非零”,是因为通常最后一个数字是 0。举两个例子,10! = 3,628,800,其 18 位非零尾数为 36,288;24! = 620,448,401,733,239,439,360...原创 2019-11-21 11:55:05 · 3547 阅读 · 0 评论 -
1000桶酒中含两桶毒酒问题
链接毒酒问题中给出如下问题:国王为10天后的生日宴会准备了1000桶酒,不幸的是,其中两桶被下了毒。为了确定两桶毒酒,有人提议用死刑犯试毒。毒的潜伏期为10天。问:至少需要多少个死刑犯才能确保找出毒酒?方案如何实行?这个题目看上去是1000桶酒中含一桶毒酒问题的简单扩展,但是实际上难度远远大于一桶毒酒问题的情况.利用信息论容易得出至少需要19个死囚才有可能找出所有毒酒.但...转载 2019-11-21 11:40:15 · 1864 阅读 · 3 评论 -
关于除以整数常数的优化
很多人都知道,整数变量乘上常数的运算我们可以通过移位和加减法运算来代替,比如计算X*2,可以通过X+X或X<<1来替换而X*9,可以通过(X<<3)+X来替换X*7可以通过(X<<3)-X来替换,等等.由于加法和移位运算在计算机中远远快于乘除运算,所以通过这种替换,运算速度可以得到极大的提高.现在一般的编译器都能够支持这种优化的,所以在写...原创 2019-11-21 13:05:31 · 2677 阅读 · 0 评论 -
浮点运算的优化
比如对于代码int x,y;...y=(x+1)+(2*x-2);那么我们很清楚,编译器可以将上面的代码优化为y=3*x-1;//实际上还会优化为y=(x可是如果换成浮点类型呢?比如double x,y;...y=(x+1)+(2*x-2);呢?这时候,标准编译选项下面,编译器不会做任何优化。这个是因为,对于浮点数做的任何优化都是不安全的。比如一个程序中可能会使用while(err+1.0!=1.原创 2006-11-26 16:49:00 · 5798 阅读 · 1 评论 -
多线程编程中的问题
现在计算机的发展,多核将成为一个趋势。所以多线程编程也必然 将越来越流行。不过,多线程编程同传统编程有很多不同。对计算机体系结构的不了解很可能会导致错误代码的产生。比如说下面是一个多线程程序,线程1执行代码:....x=1;y=1;....线程2执行代码...if(y==1){ if(x==0){ y=0; }}....假设x,y都是全局变量,而且原创 2007-01-21 10:26:00 · 1205 阅读 · 1 评论 -
代码优化实例:分数化小数
http://community.csdn.net/Expert/topic/5563/5563568.xml题目描述:将分数转化为小数,相信很多人都会吧.在计算机中并能直接进行分数运算,需要将分数转换化为浮点数或双精度数才能运算,但这样会导致结果的不精确,那么,这里给定一个分数N/D,N为分子,D为分母(N,D均为整数),请给出分数精确运算的方法并编程求出N/D的精确小数形式,当然如果这...原创 2019-11-21 12:58:56 · 1630 阅读 · 0 评论