java 二进制与十进制互相转换(支持负数) 20251631编辑
Heaven helps those who help themselves
资深码农+深耕理财=财富自由
欢迎关注
资深码农+深耕理财=财富自由
欢迎关注

java 二进制与十进制互相转换(支持负数)
Created by Marydon on 2022-04-06 09:11
1.情景展示
java二进制如何转成十进制?
十进制如何转换成二进制?
2.具体分析
二进制:用0和1表示(最高位为符号位,“0”表示正,“1”表示负,其余位表示数值的大小);
十进制:10个阿拉伯数字(0~9)共计10个数字表示。
3.解决方案
二进制转十进制
/* * 二进制转十进制(支持用负数表示的二进制) * @description: * @date: 2022/4/1 14:47 * @param: binary 二进制 * @return: java.lang.Integer 十进制 */ @Nullable public static Integer toDecimal(String binary) { if (StringUtils.isEmpty(binary)) return null; int i = new BigInteger(binary, 2).intValue(); // 如果int不够用(>32位),可以换成long(64位) // Long l = new BigInteger(binary, 2).longValue(); log.debug("二进制转十进制:\n{}", i); return i; }
十进制转二进制
/* * 十进制转二进制 * @description: * 1.所谓原码就是二进制定点表示法,即:最高位为符号位,“0”表示正,“1”表示负,其余位表示数值的大小。 * 2.反码表示法规定:正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外。 * 3.补码表示法规定:正数的补码与其原码相同;负数的补码是在其反码的末位加1。 * int:在java当中的存储范围是32位; * long:在java当中的存储范围是64位; * byte 1个字节 * short 2个字节 * int 4个字节 * long 8个字节 * @date: 2022/4/1 14:40 * @param: i * 如果你的number是正整数,则会自动转化为普通的原码; * 若是number是负数,则会转化为补码。 * @return: java.lang.String */ @NotNull public static String fromDecimal(Integer i) { if (i == null) return ""; String binaryString = Integer.toBinaryString(i); // 如果int不够用(>32位),可以换成long(64位) // String binaryString = Long.toBinaryString(i); log.debug("十进制转二进制:\n{}", binaryString); return binaryString; }
测试
toDecimal(fromDecimal(-115));
与君共勉:最实用的自律是攒钱,最养眼的自律是健身,最健康的自律是早睡,最改变气质的自律是看书,最好的自律是经济独立 。
您的一个点赞,一句留言,一次打赏,就是博主创作的动力源泉!
↓↓↓↓↓↓写的不错,对你有帮助?赏博主一口饭吧↓↓↓↓↓↓
本文来自博客园,作者:Marydon,转载请注明原文链接:https://www.cnblogs.com/Marydon20170307/p/16104963.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix