新增flag 帮助处理位掩码

This commit is contained in:
YHH
2020-06-12 08:47:13 +08:00
parent ad68f0e1a0
commit 6fa56dd572
12 changed files with 537 additions and 8 deletions

59
source/src/Math/Flags.ts Normal file
View File

@@ -0,0 +1,59 @@
/**
* 帮助处理位掩码的实用程序类
*/
class Flags {
/**
* 检查位标志是否已在整型中设置
* @param self
* @param flag
*/
public static isFlagSet(self: number, flag: number){
return (self & flag) != 0;
}
/**
* 检查位标志是否在整型中设置
* @param self
* @param flag
*/
public static isUnshiftedFlagSet(self: number, flag: number){
flag = 1 << flag;
return (self & flag) != 0;
}
/**
* 设置标志位,移除所有已经设置的标志
* @param self
* @param flag
*/
public static setFlagExclusive(self: number, flag: number){
self = 1 << flag;
}
/**
* 设置标志位
* @param self
* @param flag
*/
public static setFlag(self: number, flag: number){
self = (self | 1 << flag);
}
/**
* 取消标志位
* @param self
* @param flag
*/
public static unsetFlag(self: number, flag: number){
flag = 1 << flag;
self = (self & (~flag));
}
/**
* 反转集合位
* @param self
*/
public static invertFlags(self: number){
self = ~self;
}
}