java常用位操作

Redis 中的 Bitmap 与 Bitfield 及 Java 操作实践 Redis提供了高效的二进制位操作功能,包括Bitmap(位图)和Bitfield(位域)。Bitmap通过操作二进制位实现海量数据存储,支持位设置、统计和位运算,适用于用户签到等场景。Bitfield则支持更灵活的位域操作,如读取、修改和自增。文章详细介绍了相关命令,并通过Java的RedisTemplate提供了代码示例,包括位值设置、统计和位域操作。这些功能能够显著提升系统性能,适用于布尔状态存储和统计等场景。使用时需注意版本兼容性和序列化配置。 阅读详情
public class TestIndex {
    /**
     * 数组越界
     * 这个方法是java源码中常用的一个数组越界的判断检测
     * 顺便复习一下位操作
     */
    public static int read(byte[] b, int off, int len) throws Exception {
        // parameter check
        int result = off | len | (off + len) |(b.length - (off+len));
        if (result < 0) {
            System.out.println(result);
        } else if (len == 0) {
            return 0;
        }
        return result;
    }

    /**
     * 将一个高位在前的字节数组转为int
     * @param num
     * @return
     */
    public static byte[] intToBytes(int num){
        byte[] bytes = new byte[4];
        bytes[0] = (byte) (num >>> 24);
        bytes[1] = (byte) (num >>> 16);
        bytes[2] = (byte) (num >>> 8);
        bytes[3] = (byte) (num >>> 0);
        return bytes;
    }

    /**
     * 将一个高位在前的字节数组转为int
     * @param bytes
     * @return
     */
    public static int byteToInt(byte[] bytes){
        int _1 = bytes[0] << 24;
        int _2 = bytes[1] << 16;
        int _3 = bytes[2] << 8;
        int _4 = bytes[3] << 0;
        return _1 | _2 | _3 | _4;
    }

    /**
     * 显示一个byte数组
     * @param bytes
     */
    public static void showByte(byte[] bytes){
        for (byte b : bytes) {
            System.out.print(byteToBit(b) +" ");
        }
        System.out.println();
    }

    /** 
     * 将byte转换为一个长度为8的byte数组,数组每个值代表bit 
     */  
    public static byte[] getBooleanArray(byte b) {  
        byte[] array = new byte[8];  
        for (int i = 7; i >= 0; i--) {  
            array[i] = (byte)(b & 1);  
            b = (byte) (b >> 1);  
        }  
        return array;  
    }  
    /** 
     * 把byte转为字符串的bit 
     */  
    public static String byteToBit(byte b) {  
        return ""  
                + (byte) ((b >> 7) & 0x1) + (byte) ((b >> 6) & 0x1)  
                + (byte) ((b >> 5) & 0x1) + (byte) ((b >> 4) & 0x1)  
                + (byte) ((b >> 3) & 0x1) + (byte) ((b >> 2) & 0x1)  
                + (byte) ((b >> 1) & 0x1) + (byte) ((b >> 0) & 0x1);  
    }  

    public static void main(String[] args) {
        int num = 100;
        byte[] bytes = intToBytes(num);
        showByte(bytes);
        num = byteToInt(bytes);
        System.out.println(num);
    }
}
Java位操作工具类 经常项目中用到的Java的位运算相关的方法,稍微整理了下 详细介绍可参考博客 http://longshaojian.iteye.com/admin/blogs/1946865 请多指教! 立即下载

相关推荐

动态表单设计

自定一表单数据结构。内容展示如有必要行转列。前端根据题目类型自定义组件后端跟俊题目类型用策略模式校验各种类型这样有统计功能的简单动态问卷就可以了展示时可能某些场景需要行转列。大概估摸使用的话有可能kmic_form_data_detail表的记录数比较大,后期再考虑数据或者表迁移或拆分。

zquwei的博客 3453

Java位操作全面总结

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33852020的博客 416

2024最新指南:如何用Python批量下载Sentinel-2数据(附避坑清单)

本文提供2024年最新Python批量下载Sentinel-2遥感数据的完整指南,涵盖环境配置、API准备、核心下载流程实现及实战避坑清单。通过智能查询器、断点续传下载器等实用工具,帮助用户高效获取遥感数据,避免常见网络问题和数据完整性验证失败。

silver的专栏 618

Java 基础操作库 hoe 使用介绍

hoe 是一个 Java 基础操作库,包括 String,number,random 等常规操作,几乎包含了大部分工作中用到的常用处理方法,也有详细文档。 可以使用 Hoe 来轻松解决字符串,数字,随机数等的处理。 整个包不依赖任何其他第三方库,也极其简单小巧,只有 18kb。

五只鸭子的专栏 1366

Ubuntu 24.04 + RTX 5090 部署 OpenVLA-OFT:从环境配置到机器人任务评估实战

本文详细记录了在Ubuntu 24.04 LTS系统上,为全新RTX 5090显卡配置CUDA 12.8+与PyTorch 2.7.1+开发环境,并成功部署OpenVLA-OFT视觉语言模型进行机器人任务评估的完整实战流程。文章重点解决了驱动安装、依赖版本冲突、路径设置等核心难题,为在最新硬件上运行先进AI机器人模型提供了可靠的避坑指南和性能观察。

n8m7b6v5c4的博客 594

STM32H743 ADC校准失败排查:HAL_ADCEx_Calibration_Start()的正确调用时机

本文深入剖析了STM32H743 ADC校准失败的核心原因,即错误地在ADC使能状态下调用HAL_ADCEx_Calibration_Start()函数,导致读数漂移。文章详细解释了校准必须在ADC禁用状态下进行的硬件原理,列举了典型错误场景,并提供了上电初始化与周期性重校准的正确代码实践,帮助开发者彻底解决ADC精度问题。

ik678901的博客 1175

java两个长字符串按位或操作_关于java按位操作运算

<1>.在了解位移之前,先了解一下正数和负数的二进制表示形式以及关系:举例15和-15:15 的原码: 00000000 00000000 00000000 00001111补码: 11111111 11111111 11111111 11110000+1 =-15的原码:11111111 11111111 11111111 11110001负数的原码即为:正数的原码取反,再加1。&l...

weixin_29369347的博客 1077

Docker网络冲突?手把手教你解决Dify社区版无法访问172.18.0.0网段的问题

本文详细解析了在部署Dify社区版时,因Docker默认网段与局域网冲突导致无法访问172.18.0.0网段的问题。通过剖析Docker网络原理,提供了修改Docker守护进程默认地址池的根治方案,并介绍了在Compose文件中指定自定义网络等备选方法,帮助用户彻底解决网络冲突,保障服务稳定运行。

p8q9r0的博客 484

Java中的String类的常用方法(对于字符串的常用操作)

本文主要介绍的Java中的String类型的字符串常用的操作方法

gaoqiandr的博客 2107

【Halcon-2D测量】add_metrology_object_rectangle2_measure 函数功能(用于向2D计量模型中添加旋转矩形(rectangle2类型)计量对象)

HALCON算子add_metrology_object_rectangle2_measure解析摘要 该算子是HALCON 2D计量模块的核心算子,用于添加旋转矩形计量对象并配置测量参数。主要功能包括:定义旋转矩形几何轮廓(中心坐标、主轴角度、长短半长);生成垂直于矩形边界的测量区域;设置边缘提取预处理参数(高斯平滑、振幅阈值)。关键注意事项:MeasureLength1必须小于矩形长短半长;角度参数Phi需使用弧度单位;多线程需同步模型句柄。该算子适用于方形螺母、PCB板边框等矩形零件的精密测量,需与a

weixin_45590420的博客 1223

诊断CAPL自动化(5) ——没有CANdela,无法编辑cdd数据库文件,也能轻松完成诊断测试

🍅我们知道cdd数据库文件,是CANoe测试环境的重要组件,它可以让我们更加轻松的完成诊断测试工作;但是创建和编辑cdd文件是需要CANdela 来完成的,一个 liscense 就要将近二十万,成本确实高🍅特别是在处理22/2E/31服务的时候,频繁的增加功能,可能需要频繁的用CANdela 修改CDD,我测试开发过程中,一般很少去修改cdd,有这个时间,纯手撸也开发完了,就一个CANdela,鬼知道此时此刻到了谁手里,我也懒得去找。🍅演示软硬件环境;目录📘前言。

蚂蚁小兵 5756

Java常用操作详解和示例

本文将介绍Java中一些常用的操作,并提供详细的示例代码,包括Scanner的使用、System.out输出、switch语句、构造方法的重写和重载、文件操作、对象的序列化和反序列化,以及使用IDEA生成JAR包等。

weixin_64853678的博客 296

中兴交换机如何配置?有哪些常用的配置命令,本文值得收藏!

中兴交换机是一种常见的网络设备,用于构建和管理企业网络。它提供了丰富的功能和灵活的配置选项,使网络管理员能够根据特定需求进行定制化配置。本文将详细介绍中兴交换机的配置过程,包括登录、基本设置、VLAN配置、接口配置和安全配置等内容。

网络技术联盟站 1万+

Java常用的位操作

以下所说的都是针对二进制位的操作, ~取反:0变1,1变0 &与:同时为1时为1,其它为0 |或:同时为0时为0,其它为1 ^同或:相同时为1,其它为0 右移:左边补0,移多少位就相当于除以2的多少次方...

goblin_god的博客 134

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Java位操作

在计算机中所有数据都是以二进制的形式储存的。位运算其实就是直接对在内存中的二进制数据进行操作,因此处理数据的速度非常快。在实际编程中,如果能巧妙运用位操作,完全可以达到四两拨千斤的效果,正因为位操作的这些优点,所以位操作在各大IT公司的笔试面试中一直是个热点问题。 位操作基础 基本的位操作符有与、或、异或、取反、左移、右移这6种,它们的运算规则如下所示: 1.在这6种操作符,只有~取反是...

IBLiplus的博客 1404

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

求e的近似值java_JAVA脱水学习——java运算符位操作及常用数学函数

JAVA 运算符相关特性。一、运算符Java 程序语言支持算术运算、关系运算、逻辑运算和位运算。1.算术运算,操作对象必须是数字2.关系运算符,比较两个数字的大小,运算结果返回布尔型 boolean3.逻辑运算符,操作数据必须是布尔型,或结果为布尔型的表达式,结果返回布尔型 boolean注:&& 与 & 和 || 与 | 运算结果相同,区别在于 && 与 ...

weixin_30082367的博客 778

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

JAVA位操作全面总结

转自:http://www.cnblogs.com/andy-zhou/p/5360708.html目录位操作基础常用位操作小技巧位操作与空间压缩位操作工具类BitSet类位操作技巧转载: Java位操作全面总结在计算机中所有数据都是以二进制的形式储存的。位运算其实就是直接对在内存中的二进制数据进行操作,因此处理数据的速度非常快。在实际编程中,如果能巧妙运用位操作,完全可以达到四两拨千斤的效果,正...

lc545126483的博客 682

java学习---位操作、Arrays类、BigInteger、BigDecimal

eclipse快捷键: ctrl+shift+f 格式化代码 ctrl+shift+o import类,去掉未使用的类等等都可以使用 ctrl+shift+c 选中一行或者多行代码快速注释 ctrl+shift+x 选中的转换为大写 ctrl+shift+y 选中的转换为小写 ctrl+1 在出错误的行,使用ctrl+1比如忘记导入类了,就可以用这个解决 shift+alt...

xioaf12的专栏 240

Java Integer常用方法总结

Java Integer常用方法总结 主要是参考了这篇博客 1.主要属性 @Native public static final int MIN_VALUE = 0x80000000; // 值为 -2^31 的常量,它表示 int 类型能够表示的最小值。 @Native public static final int MAX_VALUE = 0x7fffffff; // 值为 2^31-1 的常量,它表示 int 类型能够表示的最大值。 @Native public static fi

qq_39618369的博客 1867

Java人也不能忘记的~~位操作技巧

一。数字运算与位运算    在2进制里面,一个位只可能是0,或者1。 java里面支持的位运算有: ~ 按位非(NOT) & 按位与(AND) | 按位或(OR) ^ 按位异或(XOR   位操作需要跟逻辑操作区分开(逻辑运算符AND(&&)、OR(||)以及NOT(!)能生成一个布尔值(true或false)——以自变量的逻辑关系为基础) ,这里的区分的重点是敲代码不要敲错了。。。。

wei 447

Java最不常用的运算符

Java最不常用的运算符按位操作符用代码解释含义:输出结果和运算解析 按位操作符 Java中最不常用的按位操作符。按位操作符有:&(与)、 |(或)、 ^(异或)、 ~(取反)。 具体含义和用法,我们直接上代码。 用代码解释含义: package com.cn.study; //按位操作运算 public class BitOperationStudy { /** *...

CNano的博客 336

java.util包(二)

本章介绍Java的实用工具类库java.util包。在这个包中,Java提供了一些实用的方法和数据结构。例如,Java提供日期(Data)类、日历(Calendar)类来产生和获取日期及时间,提供随机数(Random)类产生各种类型的随机数,还提供了堆栈(Stack)、向量(Vector) 、位集合(Bitset)以及哈希表(Hashtable)等类来表示相应的数据结构。  图1.1给出了java

非凡人生 755

java代码_Java代码优化常用方法

阅读本文约需要8分钟大家好,我是你们的导师,经常看我朋友圈的同学应该知道,我每天会在微信上给大家免费提供以下服务!1、长期为你提供最优质的学习资源!2、给你解决技术问题!3、每天在朋友圈里分享优质的技术文章!4、每周1、3、5送纸质书籍免费送给大家,每年至少送书800本书!5、为大家推荐靠谱的就业单位!请注意!我上面说的5点全部都是免费的!全网你应该找不到第二家吧!当然,大家在我...

weixin_39708502的博客 128

java bitset xor_Java Bitset类

Java Bitset类一个Bitset类创建一种特殊类型的数组来保存位值。BitSet中数组大小会随需要增加。这和位向量(vector of bits)比较类似。这是一个传统的类,但它在Java 2中被完全重新设计。BitSet定义了两个构造方法。第一个构造方法创建一个默认的对象: BitSet()第二个方法允许用户指定初始大小。所有位初始化为0。 BitSet(int size)BitSet中...

weixin_35918198的博客 161

类 java.math.BigInteger

<br />类 java.math.BigInteger <br />java.lang.Object<br />   |<br />   +----java.lang.Number<br />           |<br />           +----java.math.BigInteger<br />public class BigInteger<br />extends Number<br />不变的任意精度的整数。 在所有的操作中 BigIntegers 看起来好象是用二进制补码(类似 Ja

caonuonuo的专栏 791
上一篇: jvm 判断对象是否已经死亡
下一篇: 最新版Spark2.2读取多种文件格式数据
Next__One
博客等级 码龄9年 14粉丝 62原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值