1.4 关于位的一切(位和字节的简单介绍)
Android游戏开发详解
在我们继续深入之前,值得先细致地介绍如何具体把值存储到变量中。我前面提到,不同的基本数据类型具有不同的位大小。例如,一个int有32位而一个long有64位。你可能会问,那么,到底什么是位?
位(bit)是一个二进制位的简称。换句话说,如果你有一个只有0和1的二进制数,每个数字就是1位。达到8位的时候,例如,(10101001),你就有了1字节。
对于位,你需要记住的一点是:拥有的位越多,所能表示的数值也越多。为了说明这一点,让我们问一个问题。十进制的1位能够表示多少个数字?当然是10个(0,1,2,3,4,5,6,7,8和9)。两位呢?100个(00,01……99)。我们看到,每增加一个位数,都会使得我们所能表示的数值增多到原来的10倍。对于二进制数字来说,也是如此,只不过每次增加一位,所能表示的数值的数量是原来的两倍。
在计算中,位是很重要的,因为我们所操作的机器是由细小的电路组成,而这些电路要么是开,要么是关。数据表示的挑战,完全由此而引发。我们不能使用这些电路来直接表示“hello”这样的单词。我们必须使用任意某种系统将单词“hello”和某些电路的开关组合联系起来。
这就是我们应该了解的和变量相关的知识。通过声明一个新的变量,我们在内存中分配了特定数目的位(根据声明的类型),并且将某些数据的一个二进制表示存储起来,以便随后使用。
在数据类型之间转换
在Java中,可以将一种数据类型转换为另一种类型。例如,我们可以接受一个int值并且将其存储到一个long变量中。之所以能这样,是因为long变量保存了64位,可以很容易地容纳来自较小的类型int(32位)中的数据而不会遇到麻烦。但是,如果我们接受一个64位的long数字,并且试图将其放入到一个32位的int的“容器”中,将会发生什么呢?会有丧失精度的风险。这64位中的32位,必须删除掉,然后我们才能将数字放置到int变量中。
规则是这样的:如果从一个较小的类型转换为一个较大的类型,这是安全的。如果要从一个较大的类型转换为一个较小的类型,应该小心以避免丢失重要的数据。稍后,我们将详细介绍如何从一种类型转换为另一种类型。