【转】C语言的位运算的优势
位运算加速技巧
1. 如果乘上一个2的倍数数值,可以改用左移运算(Left Shift) 加速 300%
x = x * 2;
x = x * 64;
//改为:
x = x << 1; // 2 = 21
x = x << 6; // 64 = 26
2. 如果除上一个 2 的倍数数值,可以改用右移运算加速 350%
x = x / 2;
x = x / 64;
//改为:
x = x >> 1;// 2 = 21
x = x >> 6;// 64 = 26
3. 数值转整数加速 10%
x = int(1.232)
//改为:
x = 1.232 >> 0;
4. 交换两个数值(swap),使用 XOR 可以加速20%
var t:int = a;
a = b;
b = t;
//equals:
a = a^b;
b = a^b;
a = a^b;
5. 正负号转换,可以加入 300%
i = -i;
//改为
i = ~i + 1; // NOT 写法
//或
i = (i ^ -1) + 1; // XOR 写法
6. 取余数,如果除数为 2 的倍数,可利用 AND 运算加速 600%
x = 131 % 4;
//equals:
x = 131 & (4 - 1);
7. 利用 AND 运算检查整数是否为 2 的倍数,可以加速 600%
isEven = (i % 2) == 0;
//equals:
isEven = (i & 1) == 0;
8. 加速 Math.abs 600% 的写法1,写法2 又比写法1加速 20%
//写法1
i = x < 0 ? -x : x;
//写法2
i = (x ^ (x >> 31)) - (x >> 31);
//写法3
i=x^(~(x>>31)+1)+(x>>31);
9. 比较两数值相乘之后是否拥有相同的符号,加速 35%
eqSign = a * b > 0;
//equals:
eqSign = a ^ b > 0;
其它位运算技巧
1. RGB 色彩分离
var 24bitColor:uint = 0xff00cc;
var r:uint = 24bitColor >> 16;
var g:uint = 24bitColor >> 8 & 0xFF;
var b:uint = 24bitColor & 0xFF;
2. RGB 色彩合并
var r:uint = 0xff;
var g:uint = 0x00;
var b:uint = 0xcc;
var 24bitColor:uint = r << 16 | g << 8 | b;
转载于:https://www.cnblogs.com/lzw6180/p/3224496.html
【转】C语言的位运算的优势相关推荐
- c语言 枚举,位运算
c语言 枚举,位运算 枚举 枚举类型的定义和枚举变量的说明 一.枚举的定义枚举类型定义的一般形式为 二.枚举变量的说明 枚举类型变量的赋值和使用 位运算 位域 一.位域的定义和位域变量的说明 二.位域 ...
- 单片机c语言位运算写法,单片机与嵌入式系统中C语言的位运算小记
原标题:单片机与嵌入式系统中C语言的位运算小记 编了个PIC的项目,对里的还是蛮有感悟的,特此记录一下. 譬如说,在程序中定义了一个char类型的变量, purge_short_enable_flag ...
- c语言程序设计施莹答案,C语言课件-位运算.ppt
C语言课件-位运算.ppt C语言程序设计,信息工程学院 施莹 2019年11月,第12章 位运算,C语言是为描述系统而设计的,其功能应当具有汇编的功能 故C语言具有高级语言的的功能,也肯定低级语言的 ...
- 谭浩强c语言不讲位运算呢,谭浩强C语言_CHAR12位运算.DOC
您所在位置:网站首页 > 海量文档  > 计算机 > C/C++资料 谭浩强C语言_CHAR12位运算.DOC11页 ...
- C语言基础位运算符号
C语言基础位运算符号 1.<< 左移 00011000 << 3 = 11000000(便携的赋值方法:<<=) 2.>> 右移 00100100 &g ...
- c语言中位运算之布尔运算
c语言中位运算中的布尔运算有:&.|.~.^ &:按位与 |:按位或 ~:按位非 ^:按位异或,相同为0,相异为1. 计算规则如下: 位的逻辑运算的作用: 使用位向量做集合编码: 使用 ...
- C语言截取整数的某些位编程,C语言中位运算的巧用(转)
一 .位运算实例 1.用一个表达式,判断一个数X是否是2的N次方(2,4,8,16.....),不可用循环语句. X:2,4,8,16转化成二进制是10,100,1000,10000.如果减1则变成0 ...
- C语言单片机位运算——看完马上懂(个人总结)
位运算: 0XF => 1111 0XF0 => 1111 0000 0X0F0F=0XF0F => 1111 0000 1111 &(与): C语言 ...
- c语言位运算负数的实例_一招教你学会C语言中位运算
程序中的所有数在计算机内存中都是以二进制的形式储存的.位运算说穿了,就是直接对整数在内存中的二进制位进行操作.注意,位运算只针对于整数进行操作. 运算符号 运算规则 1.&与运算:对应两个二进 ...
最新文章
- 7个IntelliJ IDEA必备插件,让写代码像火箭一样飞起!
- 数据库中间件MyCAT源码分析:调试环境搭建
- 【Android】手机端的投射
- zookeeper常见问题总结
- Python绘制图形之Matplotllib绘图
- php量表是什么心理量表,心理学中的“5大心理学测评量表”你知道多少?
- SpringCloud工作笔记074---Idea2018 1.6发现不支持@Slf4j,@Getter ,@Setter注解
- Exchange服务器系统蓝屏及脱域后解决办法
- 在Zabbix中添加交换机端口监控
- SyntaxError: Non-ASCII character ‘\xe7’ in file car-training.py on line 7, but no encoding declared;
- 年龄、性别2022 cnn算法笔记
- 利用计算机可视化画一个矩形,可视化程序设计大作业题目
- java输出日志_Java日志打印方法
- extmail mysql数据库 重启_一个简单的基于postfix+extmail+mysql的邮件系统
- Java基础——【双色球案例】判断中奖情况
- 华农大学计算机专硕,华南农业大学电子工程学院(人工智能学院)林芳老师课题组招收计算机方向学硕及专硕...
- 使用jquery实现图形点击文字按顺序验证码案例及代码完整版
- Unity射击游戏发射子弹的方法和提升流畅性的小技巧
- stm32f105vct6例程_STM32F105VCT6
- 财务知识入门——《富爸爸,穷爸爸》
热门文章
- java 查询线程_Java多线程查询
- linux vim编辑器主要作用,Linux-vim编辑器
- 查找mysql的分区情况_MySQL 5.5 查看分区表的执行计划
- linux安装教程6.3,CentOS 6.3安装教程(详细图解)
- 测试CH340C的功能,制作MicroPython ESP8266,ESP32下载器
- 2021年春季学期-信号与系统-第三次作业参考答案-第二道题
- 航天智慧物流创意组-技术培训
- 为什么单片机通常只有那么小的数据内存?
- 我虐小车千百遍,小车待我如初恋
- java计算筛子概率_剑指Offer解题报告(Java版)——n个骰子的点数 43