Java使用bit array实现二进制,十进制,十六进制值之间的转换

本文详细介绍了二进制、有符号无符号概念、正负数转化、十六进制以及十进制之间的转换。重点讲解了Java中如何使用bit array实现这些转换,包括补码在负数转换中的应用,并提供了BaseConverter类的源代码作为示例。
摘要由CSDN通过智能技术生成

如果读者还对bit数组还不太了解,可以去看一下我的另一篇文章,那里对bit数组和位运算都做了解释:

http://blog.csdn.net/zimu666/article/details/8284906

二进制

二进制的表达非常简单,只有0和1两个值,又因为他在数字电路中非常容易实现和处理,所以现代计算机几乎全部使用二进制来做为基础运算方式.

二进制运算方式是逢2进1.一组二进制数的值是通过这一个bit位的值,与相应的位指数想乘的结果.

在十进制中表达一个5位数,他们的指数排列是这样的:

指数 4 3 2 1 0
2 1 1 6 0

这个十进制值的结果就是2 * 10^4 + 1 * 10^3 + 1 * 10^2 + 6 * 10^1 + 0 * 10^0 = 21160

如果在数的后面添加一个0,这个数就在十进制中进了一位,也就是以前数的十倍

二进制的表现方式相同,在讨论二进制的时候,通常需要说明一下哪一位是最高位(most significant bit),哪一位是最低位(least significant bit).

大部分使用的都是最低位在二进制数的最右边.

指数 7 6 5 4 3 2 1 0
0 1 1 0 1 0 1 0

与十进制的运算原理一样: 1 * 2^6 + 1 * 2^5 +1 * 2^3 +1 * 2^1 = 64 + 8 + 2 = 74

同理,如果向这个数(指的是二进制数0110 1010)后面添加一个0,这个数也想当于进了一位,只不过进位后的数是以前数的两倍.



signed/unsigned

这里需要讨论一下signed(有符号)和unsgined(无符号)

什么是符号呢?

一个二进制数的最高位(一般情况下是最左边的一位)被称为符号位,这个位置上面的值(0或1)表示了这个二进制数是不是一个负数,例如

一个8-bit的二进制数,例子中会尽量使用byte格式的数,因为整数类型的太长了,不便于操作

1 0 0 0 0 0 0 1
这里的最高位是1,如果当作有符号数来处理,那么这个二进制数的结果就是 -1 * 2^7 + 1 * 2^0 = -128 + 1 = -127

通过这

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值