向下舍入及向上舍入
向下舍入:例如把135元以10元为单位进行向上舍入,就是130元;把675元以100元为单位进行向上舍入,就是600元。也可以理解为,向下舍入就是把最后几位数字强制变为0。
向上舍入:例如把135元以10元为单位进行向上舍入,就是140元;把675元以100元为单位进行向上舍入,就是700元。
向下舍入和向上舍入可使用与运算,比如把变量i中的数字以0x1000为单位进行向下舍入的式子如下:
i = i &0xffff000;
以0x1000为单位0x12345678进行向上舍入的式子如下:
if((i & 0xfff) != 0) { i = (i & 0xfffff000) + 0x1000; }
需要注意的是,与运算不能用于十进制数的向下舍入处理,只能用于二进制的向下舍入处理。
鼠标和窗口的叠加处理
鼠标和窗口的叠加处理,类似于将绘制图案的透明图层叠加在一起,用过PS的同学对图层这个概念会有了解。
图层从底往上,最底层是桌面壁纸,中间是各种各样窗口,最上面的图层用于描绘鼠标。
由于鼠标每次移动,整个图层都要重新描绘一遍,操作系统的反应会非常慢,而且画面还会一闪一闪的。
针对这个问题做了一些优化,对于鼠标移动,只需要重新描绘移动相关部分,即移动前后的部分就行了。而对于窗口的文字显示,也不用改写整个图层的内容,而是在图层中指定范围,将指定范围内的内容进行刷新就可以了。
经过一系列优化,操作系统反应速度大大提升。
https://gitee.com/mint1993/myos.git