[code] if (x<0)x=0;else if (x>255)x=255;
2024-09-05 11:00:57
//颜色范围0-255;
// 1.原始:
if (tem_b<)tem_b=;else if (tem_b>)tem_b=;
if (tem_g<)tem_g=;else if (tem_g>)tem_g=;
if (tem_r<)tem_r=;else if (tem_r>)tem_r=;
//2.使用条件状态值生成掩码来移除条件分支
tem_b &=-(tem_b>=);//求负是为了生成掩码,也可以减1来生成掩码 <0
tem_b = (tem_b | -(tem_b>) ) & 0xFF;//>255
tem_g &=-(tem_g>=);
tem_g = (tem_g | -(tem_g>) ) & 0xFF;
tem_r &=-(tem_r>=);
tem_r = (tem_r | -(tem_r>) ) & 0xFF;
//3.使用带符号的移位生成掩码来移除条件分支 (建议使用该方案替代上面的条件状态值方案)
tem_b &=~(tem_b>>);
tem_b = (tem_b | ((-tem_b)>>) ) & 0xFF;
tem_g &=~(tem_g>>);
tem_g = (tem_g | ((-tem_g)>>) ) & 0xFF;
tem_r &=~(tem_r>>);
tem_r = (tem_r | ((-tem_r)>>) ) & 0xFF; //4.查表移除分支;
unsigned char_color_table[++];//假设color属于[-256..512]
unsigned char*color_table=&_color_table[];//先偏移256
//初始化 color_table;
for ( int i = -;i< ; i++)
{
if (i<) color_table[i]=;
else if (i>) color_table[i]=;
else color_table[i]=i;
}
...
resultRow[*x]=color_table[tem_b];
resultRow[*x+]=color_table[tem_g];
resultRow[*x+]=color_table[tem_r];
最新文章
- 我的屌丝giser成长记-工作篇之A公司
- bash coding to changeNames
- Sql Server之旅——第九站 看公司这些DBA们设计的这些复合索引
- 读懂IL代码就这么简单 (一)
- es安装
- 20145215《Java程序设计》第8周学习总结
- Python 学习之urllib模块---用于发送网络请求,获取数据(3)
- ECSHOP首页站内快讯在哪里添加和修改?
- FreeCodeCamp:Confirm the Ending
- 【转】Git代码行统计命令集
- poj2886线段树(单点修改,区间查询)
- shell 处理 文件名本身带星号的情况
- Android中的服务
- 为何webpack打包后的文件要放在服务器上才能运行
- Linux内存使用情况以及内存泄露分析之工具与方法
- 关于JavaScript的框架和库
- day 2:计算机的基础知识,编程语言分类
- 浅析b-树 b+树 以及Mysql的Innodb,Myisam引擎
- The Twelve-Factor Container
- day31-python阶段性复习五
热门文章
- error C2712: Cannot use __try in functions that require object unwinding
- iOS开发之SceneKit框架--实战地月系统围绕太阳旋转
- csdn自动生成目录索引、插入代码片快捷键
- 安装MySql社区版(35-3)
- 第十八篇:java操作Excel要处理和分辨的几个概念
- 大半宿,封装了一个MP3播放器的类,写了个简陋的播放器
- OA系统和ERP系统的区别
- 编写main方法
- winform 旋转图片
- Luogu P2458 [SDOI2006]保安站岗(树形dp)