位运算加速技巧
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语言的位运算的优势相关推荐

  1. c语言 枚举,位运算

    c语言 枚举,位运算 枚举 枚举类型的定义和枚举变量的说明 一.枚举的定义枚举类型定义的一般形式为 二.枚举变量的说明 枚举类型变量的赋值和使用 位运算 位域 一.位域的定义和位域变量的说明 二.位域 ...

  2. 单片机c语言位运算写法,单片机与嵌入式系统中C语言的位运算小记

    原标题:单片机与嵌入式系统中C语言的位运算小记 编了个PIC的项目,对里的还是蛮有感悟的,特此记录一下. 譬如说,在程序中定义了一个char类型的变量, purge_short_enable_flag ...

  3. c语言程序设计施莹答案,C语言课件-位运算.ppt

    C语言课件-位运算.ppt C语言程序设计,信息工程学院 施莹 2019年11月,第12章 位运算,C语言是为描述系统而设计的,其功能应当具有汇编的功能 故C语言具有高级语言的的功能,也肯定低级语言的 ...

  4. 谭浩强c语言不讲位运算呢,谭浩强C语言_CHAR12位运算.DOC

    您所在位置:网站首页 > 海量文档 &nbsp>&nbsp计算机&nbsp>&nbspC/C++资料 谭浩强C语言_CHAR12位运算.DOC11页 ...

  5. C语言基础位运算符号

    C语言基础位运算符号 1.<< 左移 00011000 << 3 = 11000000(便携的赋值方法:<<=) 2.>> 右移 00100100 &g ...

  6. c语言中位运算之布尔运算

    c语言中位运算中的布尔运算有:&.|.~.^ &:按位与 |:按位或 ~:按位非 ^:按位异或,相同为0,相异为1. 计算规则如下: 位的逻辑运算的作用: 使用位向量做集合编码: 使用 ...

  7. C语言截取整数的某些位编程,C语言中位运算的巧用(转)

    一 .位运算实例 1.用一个表达式,判断一个数X是否是2的N次方(2,4,8,16.....),不可用循环语句. X:2,4,8,16转化成二进制是10,100,1000,10000.如果减1则变成0 ...

  8. C语言单片机位运算——看完马上懂(个人总结)

    位运算:    0XF => 1111    0XF0 => 1111 0000    0X0F0F=0XF0F => 1111 0000 1111 &(与):    C语言 ...

  9. c语言位运算负数的实例_一招教你学会C语言中位运算

    程序中的所有数在计算机内存中都是以二进制的形式储存的.位运算说穿了,就是直接对整数在内存中的二进制位进行操作.注意,位运算只针对于整数进行操作. 运算符号 运算规则 1.&与运算:对应两个二进 ...

最新文章

  1. 7个IntelliJ IDEA必备插件,让写代码像火箭一样飞起!
  2. 数据库中间件MyCAT源码分析:调试环境搭建
  3. 【Android】手机端的投射
  4. zookeeper常见问题总结
  5. Python绘制图形之Matplotllib绘图
  6. php量表是什么心理量表,心理学中的“5大心理学测评量表”你知道多少?
  7. SpringCloud工作笔记074---Idea2018 1.6发现不支持@Slf4j,@Getter ,@Setter注解
  8. Exchange服务器系统蓝屏及脱域后解决办法
  9. 在Zabbix中添加交换机端口监控
  10. SyntaxError: Non-ASCII character ‘\xe7’ in file car-training.py on line 7, but no encoding declared;
  11. 年龄、性别2022 cnn算法笔记
  12. 利用计算机可视化画一个矩形,可视化程序设计大作业题目
  13. java输出日志_Java日志打印方法
  14. extmail mysql数据库 重启_一个简单的基于postfix+extmail+mysql的邮件系统
  15. Java基础——【双色球案例】判断中奖情况
  16. 华农大学计算机专硕,华南农业大学电子工程学院(人工智能学院)林芳老师课题组招收计算机方向学硕及专硕...
  17. 使用jquery实现图形点击文字按顺序验证码案例及代码完整版
  18. Unity射击游戏发射子弹的方法和提升流畅性的小技巧
  19. stm32f105vct6例程_STM32F105VCT6
  20. 财务知识入门——《富爸爸,穷爸爸》

热门文章

  1. java 查询线程_Java多线程查询
  2. linux vim编辑器主要作用,Linux-vim编辑器
  3. 查找mysql的分区情况_MySQL 5.5 查看分区表的执行计划
  4. linux安装教程6.3,CentOS 6.3安装教程(详细图解)
  5. 测试CH340C的功能,制作MicroPython ESP8266,ESP32下载器
  6. 2021年春季学期-信号与系统-第三次作业参考答案-第二道题
  7. 航天智慧物流创意组-技术培训
  8. 为什么单片机通常只有那么小的数据内存?
  9. 我虐小车千百遍,小车待我如初恋
  10. java计算筛子概率_剑指Offer解题报告(Java版)——n个骰子的点数 43