小学就学过四舍五入,那时是由“人”用肉眼来观察、并判断,是否应该进一。
而“四舍五入”的正规做法,就是“乘二进位”。
就是说:
小数是0.5~0.9,乘以2,出现的进位就是1;
小数是0.0~0.4,乘以2,出现的进位就是0。
那么,不管小数是多少,乘以2之后,把“进位”加到整数上,这就是“四舍五入”。
用汇编语言编写乘2的运算,最简单的方法就是“左移一位”,移出来的位,就是“进位”。
再把它加入到整数即可。
这么简单的问题,竟然也有人会想到用C语言编程,再反编译成汇编程序,呵呵,真是笨的可爱 !
C语言,是脱离硬件的,离计算机本身的技术,相差太远了。在计算机领域,它也就是入门级的编程语言。
C语言,由于它具有“万金油”特性(可移植性),激发了很多人的学习热情。
但是,如果仅仅掌握了C语言,却不很熟悉某种CPU的汇编指令,终归也就是个跑龙套的角色。
关于本文,可以参考以下问答:
【问】汇编能实现小数的四舍五入么?应该很难实现吧? 必须调用C语言的代码来实现小数的四舍五入?怎么反编译阿..不会阿..
【答】四舍五入,是由“人”,用肉眼观察、并判断,是否应该进一。而“四舍五入”的正规做法,就是“乘二进位”。就是:小数是0.5,乘以2,出现的进位就是1;小数是0.4,乘以2,出现的进位就是0。不管小数是多少,乘以2之后,把“进位”加到整数上,就是“四舍五入”。用汇编,编写乘2的运算,不就是左移一位吗?移出来的,不就是进位吗?这就太简单了,怎么会扯到C语言上去!还有人能想到反编译,会的多了,都学愚了。
顺便说一下:
对于8进制,应该使用“三舍四入”;
对于16进制,应该使用“七舍八入”。
对于其它进制,也应该仿照此方法进行处理。