分享实用小工具:JAVA版本位运算工具类

打印 上一主题 下一主题

主题 851|帖子 851|积分 2555

将二进制数中的每位数字1或0代表着某种开关标记,1为是,0为否,则一个数字可以代表N位的开关标记值,可有效减少过多的变量定义 或 过多的表字段,同时也能在一些复杂的组合判断场景下利用位与、位或、异或等位运算实现简单高效的逻辑判断
如下是JAVA版位运算工具类,没啥技术含量,主要是运用:位移、位与、位或、异或 运算,如果对位运算操作不清楚的可以阅读我之前的文章:简简单单学会C#位运算 - 梦在旅途 - 博客园 (cnblogs.com)  --虽是C#,其实原理都一样,与语言无关。
[code]/** * @author zuowenjun * @description 位运算工具 * 用途:将二进制数中的每位数字1或0代表着某种开关标记,1为是,0为否,则一个数字可以代表N位的开关标记值,可有效减少过多的变量定义 或 过多的表字段 */public class BitUtils {    /**     * 获取二进制数字中指定位数的结果,如:1011,指定第2位,则结果是0,第3位,则结果是1     *     * @param num 二进制数(可以十进制数传入,也可使用0b开头的二进制数表示形式)     * @param bit 位数(第几位,从右往左,从0开始)     * @return     */    public static int getBitFlag(long num, int bit) {        return (int) num >> bit & 1;    }    /**     * 更新二进制数字中指定位的值     *     * @param num       二进制数(可以十进制数传入,也可使用0b开头的二进制数表示形式)     * @param bit       位数(第几位,从右往左,从0开始)     * @param flagValue 位标记值(true=1,false=0)     * @return     */    public static long updateBitValue(long num, int bit, boolean flagValue) {        if (flagValue) {            //将某位由0改为1            return num | (1
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

tsx81428

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表