码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • java最低位怎么取_java简单的二进制位操作,取位数据,设置位数据


    java最低位怎么取_java简单的二进制位操作,取位数据,设置位数据

    • int转二进制
    • 转16进制字符串
    • 二进制字符串转int
    • 十六进制字符串转int
    • 16进制字符串转byte
    • 取高位的数据
    • 取低位的数据
    • 取中间几位

    int转二进制

    Integer.toBinaryString(123)
    
    • 1

    转16进制字符串

    String.format("%02x", b & 0xff或int)
    
    • 1

    二进制字符串转int

    Integer.parseInt("1111011", 2)
    
    • 1

    十六进制字符串转int

    Integer.parseInt("0f", 16)
    
    • 1

    16进制字符串转byte

    Byte.parseByte("0f", 16)
    
    • 1

    取高位的数据

    例如一个字节 byte b=0xE7; 二进制为 11100111;
    要取出高三位 即“111”再转成int ,取为7;

    /**
    * 取一个字节的高几位bit
    * @param b 字节
    * @param length 几位
    * @return 10进制
    */
    public static int getLeftNum(byte b,int length) {
    if(length>=8||length<1){
    	return -1;
    }
    	return b>>(8-length);
    }
    
    public static int getLeftNum(int b) {
    //0x5F2B 高8位等于1个字节向右移,变成低位
    	return b>>8;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    取低位的数据

    需要取低几位,就先构建一个低几位全是1,其它位全是0的数据 ,即11111111往右移,然后保存需要的位数
    例如,需要取低三位的,则把 11111111往右移8-3=5位,得到00000111
    再用00000111&(与)原数据,则把原数据的前5位全置为0了

    /**
    * 取一个字节的高几位bit
    * @param b 字节
    * @param length 几位
    * @return 10进制
    */
    public static int getRightNum(byte b,int length) {
    byte mv=(byte) (0xff>>(8-length));
    return b&mv;
    }
    
     
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    取中间几位

    先从高位的方向取,再从低位的方向取

    /**
    
    * 取中间几位,包括 startIndex位和endIndex位
    * @param b
    * @param startIndex
    * @param endIndex
    * @return
    */
    public static int getMidNum(byte b,int startIndex,int endIndex) {
    byte i=(byte) getLeftNum(b,endIndex+1);//先取高几位
    return getRightNum(i,endIndex-startIndex+1);//再取低几位
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
  • 相关阅读:
    Django(三)接口自动化平台HttpRunnerManager本地部署
    mysql8-索引的使用规则验证
    学生管理系统VueAjax版本
    电脑风扇控制软件 Macs Fan Control Pro mac中文版功能介绍
    STM32通用定时器输入捕获
    Python中常用的爬虫库
    项目经验分享|openGauss 陈贤文:受益于开源,回馈于开源
    《Web安全基础》09. WAF 绕过
    【一文秒懂——Profile配置】
    tomcat读取文件路径问题
  • 原文地址:https://blog.csdn.net/oThrowsException/article/details/133808572
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号