30天自制操作系统——第十天叠加处理

向下舍入及向上舍入

向下舍入:例如把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

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值