iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >AS3中的位操作
  • 763
分享到

AS3中的位操作

操作 2023-01-31 06:01:44 763人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

介绍AS3中常见的位运算技巧。在AS3中位操作是非常快的,这里列出一些可以加快某些计算速度的代码片段集合。我不会解释什么是位运算符,也不会解释怎么使用他们,只能告诉大家如果想清楚其中的原理先认真学一下2进制.左位移几就相当于乘以2的几次方(

介绍AS3中常见的位运算技巧。
在AS3中位操作是非常快的,这里列出一些可以加快某些计算速度的代码片段集合。我不会解释什么是位运算符,也不会解释怎么使用他们,只能告诉大家如果想清楚其中的原理先认真学一下2进制.


左位移几就相当于乘以2的几次方( Left bit shifting to multiply by any power of two )

大约快了300%
x = x * 2;
x = x * 64;
//相当于:
x = x << 1;
x = x << 6;

右位移几就相当于除以2的几次方(Right bit shifting to divide by any power of two)

大约快了350%
x = x / 2;
x = x / 64;
//相当于:
x = x >> 1;
x = x >> 6;

Number 到 integer(整数)转换

在AS3中使用int(x)快了10% 。尽管如此位操作版本在AS2中工作的更好
x = int(1.232)
//相当于:
x = 1.232 >> 0;

提取颜色组成成分

不完全是个技巧,是正常的方法 (Not really a trick, but the regular way of extracting values using bit masking and shifting.)
//24bit
var color:uint = 0x336699;
var r:uint = color >> 16;
var g:uint = color >> 8 & 0xFF;
var b:uint = color & 0xFF;
//32bit
var color:uint = 0xff336699;
var a:uint = color >>> 24;
var r:uint = color >>> 16 & 0xFF;
var g:uint = color >>> 8 & 0xFF;
var b:uint = color & 0xFF;

合并颜色组成成分

替换值到正确位置并组合他们 (‘Shift up’ the values into the correct position and combine them.)
//24bit
var r:uint = 0x33;
var g:uint = 0x66;
var b:uint = 0x99;
var color:uint = r << 16 | g << 8 | b;
//32bit
var a:uint = 0xff;
var r:uint = 0x33;
var g:uint = 0x66;
var b:uint = 0x99;
var color:uint = a << 24 | r << 16 | g << 8 | b;

使用异或运算交换整数而不需要用临时变量

这里快了 20%
var t:int = a;
a = b;
b = t;
//相当于:
a ^= b;
b ^= a;
a ^= b;

自增/自减(Increment/decrement)

这个比以前的慢不少,但却是个模糊你代码的好方法;-)
i = -~i; // i++
i = ~-i; // i--

取反(Sign flipping using NOT or XOR)

快了300%!
i = -i;
//相当于:
i = ~i + 1;
//或者
i = (i ^ -1) + 1;

使用bitwise AND快速取模 (Fast modulo operation using bitwise AND)

如果除数是2的次方,取模操作可以这样做:

模数= 分子 & (除数 - 1);

这里大约快了600%
x = 131 % 4;
//相当于:
x = 131 & (4 - 1);

检查是否为偶数(Check if an integer is even/uneven using bitwise AND)

这里快了 600%
isEven = (i % 2) == 0;
//相当于:
isEven = (i & 1) == 0;

绝对值

忘记 Math.abs()吧 (Forget Math.abs() for time critical code.)
version 1 比 Math.abs() 快了2500% ,version 2 居然比 version 1 又快了20% !
//version 1
i = x < 0 ? -x : x;
//version 2
i = (x ^ (x >> 31)) - (x >> 31);


Comparing two integers for equal sign
This is 35% faster.
eqSign = a * b > 0;
//equals:
eqSign = a ^ b >= 0;

快速颜色转换从R5G5B5 到 R8G8B8 象素格式用移位
R8 = (R5 << 3) | (R5 >> 2)
G8 = (R5 << 3) | (R5 >> 2)
B8 = (R5 << 3) | (R5 >> 2)

--结束END--

本文标题: AS3中的位操作

本文链接: https://www.lsjlt.com/news/190458.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • AS3中的位操作
    介绍AS3中常见的位运算技巧。在AS3中位操作是非常快的,这里列出一些可以加快某些计算速度的代码片段集合。我不会解释什么是位运算符,也不会解释怎么使用他们,只能告诉大家如果想清楚其中的原理先认真学一下2进制.左位移几就相当于乘以2的几次方(...
    99+
    2023-01-31
    操作
  • Linux内核中的位数组和位操作
    这篇文章主要介绍“Linux内核中的位数组和位操作”,在日常操作中,相信很多人在Linux内核中的位数组和位操作问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Linux内核中的位数组和位操作”的疑惑有所帮助!...
    99+
    2023-06-16
  • 浅析Golang中的的位操作(按位运算符)
    在计算机内存昂贵,处理能力有限的美好旧时光里,用比较黑客范的位运算方式去处理信息是首选方式(某些情况下只能如此)。时至今日,直接使用位运算仍然是很多计算领域中不可或缺的部分,例如底层系统编程,图形处理,密码学等。Go 编程语言支持以下按位运...
    99+
    2023-05-14
    位操作 go语言 Golang
  • Golang中的位操作方法有哪些
    这篇文章主要讲解了“Golang中的位操作方法有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Golang中的位操作方法有哪些”吧!在计算机内存昂贵,处理能力有限的美好旧时光里,用比较黑...
    99+
    2023-07-05
  • 详解Java的位操作符
    Java的位操作符用来操作整数基本数据类型中的单个“比特”(bit),即代进制位。而我们知道比特就是0和1,那么,位操作就是对这些数据进行基本的操作。如果基本类型是char、byte或者short类型的数值进行移位处理,那么会转化成int类...
    99+
    2023-05-31
    java 操作符
  • Python 位操作运算符
    & 按位与运算符:参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0 (a & b) 输出结果 12 ,二进制解释: 0000 1100 | 按位或运算符:只要对应的二个二进位有一个为1时,结果位就...
    99+
    2023-01-30
    运算符 操作 Python
  • 如何使用redis的bit位操作
    这篇文章主要介绍“如何使用redis的bit位操作”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“如何使用redis的bit位操作”文章能帮助大家解决问题。本文red...
    99+
    2024-04-02
  • windows中64位操作系统的概念是什么
    今天小编给大家分享一下windows中64位操作系统的概念是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。某台微机安装的...
    99+
    2023-06-29
  • 32位与64位操作系统如何区分从32位和64位的概念
    今天就跟大家聊聊有关32位与64位操作系统如何区分从32位和64位的概念,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。有时候我们下载软件的时候,电脑系统便会提示,是选择安装32位的还...
    99+
    2023-06-14
  • 什么是Java按位操作符
    什么是Java按位操作符?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。Java的位操作符用来操作整数基本数据类型中的单个“比特”(bit),即代进制位。而我们知...
    99+
    2023-05-31
    java 按位操作符
  • 关于AS3中Vector的sort排序
     先上2个代码private function sortRank(x:RankPlayerModel, y:RankPlayerModel):Number   {    var lastNameSort:Number = sortNum(x...
    99+
    2023-01-31
    Vector sort
  • 电脑操作系统中32位和64位到底有哪些区别
    电脑操作系统中32位和64位的区别主要在以下几个方面:1. 内存支持:32位操作系统最多支持4GB的内存,而64位操作系统可以支持更...
    99+
    2023-09-07
    电脑
  • 文件操作的艺术:操作系统中的高效操作
    1. 理解文件结构 文件是操作系统中存储和组织数据的基本单元。它们由文件头、文件内容和文件尾组成。文件头包含有关文件及其内容的信息,例如文件类型、大小和创建日期。文件内容是实际数据,而文件尾标识文件结束。 2. 文件操作命令 每个操作系...
    99+
    2024-02-29
    文件操作、操作系统、命令行、Python、文件权限
  • 数组循环移位操作实例
    题: 如标题,要求时间复杂度为O(N)。解法:右移k位,前k位逆序,后N-k位逆序,再整个逆序即可。复制代码 代码如下:#include <stdio.h> &...
    99+
    2022-11-15
    数组 循环 移位
  • ORACLE中如何查找定位表最后DML操作的时间
    这篇文章主要介绍ORACLE中如何查找定位表最后DML操作的时间,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1:使用ORA_ROWSCN伪列获取表最后的DML时间 &nb...
    99+
    2024-04-02
  • PS复位参数操作的技巧是什么
    本篇内容介绍了“PS复位参数操作的技巧是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! 隐藏技巧发动...
    99+
    2024-04-02
  • C语言编程开发中位操作符有哪些
    本篇内容主要讲解“C语言编程开发中位操作符有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C语言编程开发中位操作符有哪些”吧!在C语言编程中,数据的位是可以操作的最小数据单位,理论上可以用“...
    99+
    2023-06-17
  • 详解Java如何利用位操作符创建位掩码
    目录位掩码举个例子编码解码提取一个比特第一比特任意位置的位提取多个比特应用一个比特掩码总结在本文中,我们来看看如何使用位操作符实现低级别的位掩码。我们将看到我们如何将一个单一的int...
    99+
    2022-11-13
    Java位操作符创建位掩码 Java 创建位掩码 Java 位操作符 Java 位掩码
  • java中的JSON操作
    在Java中,可以使用许多库来操作JSON数据。以下是一些常用的JSON库:1. Jackson:Jackson是一个流行的JSON...
    99+
    2023-09-28
    Java
  • python中的SQLite操作
    上一个博客讲了SQLite的安装及使用,今天我们用python来连接sqlite,从而建立一个与上次一样的表。因为python内置了sqlite3,我们可以不用下载,直接使用下面请看代码:#*- coding: utf-8 -* imp...
    99+
    2023-01-31
    操作 python SQLite
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作