Java二进制位运算符
2021/9/3 22:07:14
本文主要是介绍Java二进制位运算符,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
二进制原码、反码、补码
原码
原码就是机器数,是加了一位符号位的二进制数(因为数值有正负之分),正数符号位为0,负数符号位为1。
获取原码方法: 注:int 类型32位
使用StringBuilder的insert方法:
注:可将字符串插入到字符序列中,索引位置为offset (从0起) 的位置开始
final static char[] digits = {'0' , '1'}; /**获取原码方法,int类型32位 */ private static String toUnsignedString(int value) { StringBuilder sb = new StringBuilder(); int i = 32; int j = value; do { if (j >= 0) sb.insert(0,digits[j % 2]); else sb.insert(0,digits[-(j % 2)]);//因为小于0,所以得出的数值为负数,加上负号转为正数 j /= 2; i--; } while (i > 0); //格式处理一下 if(value < 0) sb.setCharAt(0, '1'); for (i = 0; i < sb.length(); i++) { if((i + 1) % 5 == 0) sb.insert(i, " "); //4位一组 } return sb.toString(); }
注:insert一个,往后推
setCharAt(int i, char c):将索引为i 的代码单元设置为 c(可以理解为替换)
反码
正数的反码 == 原码,负数的反码是在其原码的基础上,符号位(首位)不变,其余各个位取反。
补码
正数的补码 == 原码,负数的补码是在其反码的基础上加1。
总结:
正数:原码 = 反码 = 补码
负数:反码 = 原码符号位不变,其余各位取反 补码 == 反码加1
注:二进制都是由高位到低位
位运算
位运算分类
左移(<<):不分正负数,低位补0
右移(>>):正数高位补0,负数高位补1
无符号右移(>>>):不分正负数,高位补0
转换二进制的方法:
1> jdk自带方法 Integer.toBinaryString()
private static String binaryToDecimal(int num) { StringBuilder sb = new StringBuilder(); sb.append(Integer.toBinaryString(num));//是有jdk自带方法转为二进制 for (int i = 0; i < 16 - sb.length; i++) {//补齐16位 sb.insert(0, 0); } for (int i = 0; i < sb.length; i++) { if((i + 1) % 5 == 0) sb.insert(i, " "); //四位一组 } return sb.toString(); }
2> 求余,逐个插入
final static char[] digits = {'0' , '1'}; /**获取原码方法,int类型32位 */ private static String toUnsignedString(int value) { StringBuilder sb = new StringBuilder(); int i = 32; int j = value; do { if (j >= 0) sb.insert(0,digits[j % 2]); else sb.insert(0,digits[-(j % 2)]);//因为小于0,所以得出的数值为负数,加上负号转为正数 j /= 2; i--; } while (i > 0); //格式处理一下 if(value < 0) sb.setCharAt(0, '1'); for (i = 0; i < sb.length(); i++) { if((i + 1) % 5 == 0) sb.insert(i, " "); //4位一组 } return sb.toString(); }
这篇关于Java二进制位运算符的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-26消息中间件源码剖析教程
- 2024-11-26JAVA语音识别项目资料的收集与应用
- 2024-11-26Java语音识别项目资料:入门级教程与实战指南
- 2024-11-26SpringAI:Java 开发的智能新利器
- 2024-11-26Java云原生资料:新手入门教程与实战指南
- 2024-11-26JAVA云原生资料入门教程
- 2024-11-26Mybatis官方生成器资料详解与应用教程
- 2024-11-26Mybatis一级缓存资料详解与实战教程
- 2024-11-26Mybatis一级缓存资料详解:新手快速入门
- 2024-11-26SpringBoot3+JDK17搭建后端资料详尽教程