举个例子,绘图之类场合, 最基本的操作,对坐标x, y处写像素c,一般是对显存执行
*(base + y * width + x) = c;
但是实际上的横向分辨率往往是640, 800, 1024,1440, 1920之类数值,都可以凑成少数几个2的整数次幂之和, 写像素又是相对高频的操作
所以当年dos下会根据分辨率, y*640会优化成y*512+y*128 = y<<9+y<<7
y*800会优化成y*512+y*256+y*32再变成移位
现在应该不需要这么折腾了,估计怎么乘都没区别,有区别编译器也大概率替你搞定了。
【 在 tom6bj (tom) 的大作中提到: 】
: 初始化无所谓, 这里反正是给人看的
: 编译时就处理成0x40001000了
: 什么时候用>>得看需求
: ...................
--
修改:tom6bj FROM 106.121.158.*
FROM 106.121.158.*