首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

二进制与十进制的关系跟转化

2012-12-23 
二进制与十进制的关系和转化搞了这么久的程序,还是对进制和转化一知半解,曾也在这上面栽了几回,今天就狠下

二进制与十进制的关系和转化

搞了这么久的程序,还是对进制和转化一知半解,曾也在这上面栽了几回,今天就狠下心好好研究下吧:

?

1. 二进制表示:

形如:0000 0001

每一位称为一个bit位,有多少个bit位,这个二进制数就有几位。如该数有8个bit位。

?

2. 数据类型与二进制位数:

1 个字节 ? 有 ? ?8 个bit位 ? ??即: 1Byte ?= 8bit

1 个字 ? ? ?有 ? ?2 个字节 ? ? ?即: 1Word = 2Byte = 16bit

?

Java中的整数类型:

short ? ? ? 有 ? ?2个字节 ? ? ? 即: 1short = 2Byte = 16bit

int ? ? ? ? ? 有 ? ?4个字节 ? ? ? 即: ?1int ? ?= 4Byte = 32bit

long? ? ? ? 有 ? ?8个字节 ? ? ? 即: ?1long ?= 8Byte = 64bit

?

2'. 容量与二进制位数:

1KB = 1024 Byte = 1024 * 8 bit = 1024 个字 = 1024 short = 512 int = 256 long

?

3. 二进制与十进制的关系:

以一个short型(16bit)为例:

?

二进制:0001 0101 = 2^0 + 2^2 + 2^4 = 21 : 十进制

?

4. 二进制的负数表示:

对于每类型的数据,使用其bit位的最高位来表示符号,最高位为1表示负数,0为正数。如short的第8位,int的第32位,long的第64位。

?

以一个short型(16bit)为例:

十进制数:21 ?= 二进制数:0001 0101 ?--- 那么 -21如何表示?

先对21的二进制数取反 ? ? : 1110 1010

再+1 ? ? ? ? ? ? ? ? ? ? ? ? ? ? : 1110 1011 ?----这就是-21.

?

? ? ? ? 对于一个一进制数 ? ? ? ? ? ?:1110 0111 ?----这是一个负数,那它是负几呢?

可以使用上面方法的逆向方法,但也可以使用同样的方式(二进制就是这么巧妙)

取反 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?:0001 1000

再+1 ? ? ? ? ? ? ? ? ? ? ? ? ? ? :0001 1001 ?----- 2^0 + 2^3 + 2^4 = 25, 所以原来的数为-25.

?

5. 数据类型的表示范围:

?以short为例:

short共8bit,其中最高位(第8位)用来表示符号,所以

其正数范围为 0 ~ (2^0 + 2^1 + 2^2 + ... + 2^6) = 2^7 - 1。

也可以这样理解,用7个bit位来表示数值(第8位用来表示符号),排列可能数为 2^7,0为其中的一个可能,所以范转为 0 ~ 2^7-1 即 0 ~ 127

?

其负数范围为 -1 ~ - (2 ^ 7) 即 -1~-128

为什么不是-127呢,还是向上面一样理解,用7个bit位来表示数值(第8位用来表示符号),排列可能数为 2^7,但是与正数不同的是,这里不需要抽一种可能来表示0,而是直接从-1开始,共128种可能,即到-128.

?

所以总结为:short类型的数值范围为 -128 ~ 127,其中负数范围为 -128 ~ -1 (共128个数),正数范围为 0 ~ 127 (共128个数)

?

同理:

int?:?-(2^15) ~ 2^15 -1

long ?: -(2^63) ~ 2^63 -1

?

?

待续: java中的类型转换补位,纯二进制转换,二进制移位操作, java的二进制使用BitSet

热点排行