—— 本文参照 Learn Java for Android Development (第三版)
二进制 VS 十进制
计算机处理数据是使用的二进制数字系统,也就是所有的数据都是使用两个数字表示的,那就是0和1。相反,我们人类在处理数据的时候使用的是十进制数字系统,也就是所有的数据都是使用0-9这10个数字表示的。
在这里我们很有必要先讲一下二进制跟十进制之间的转换,如果你想把一个十进制表示的数字转换成用二进制表示,那么具体的操作步骤如下:
1 把这个十进制整数当做一个系数
2 直到这个系数为0的时候就停止操作
3 取整数系数除以2以后得到的商作为新的系数,余数则用于二进制表示
4 继续执行2操作的步骤
举个实际的例子,假如你要求整数19用二进制怎么表示,具体的步骤如下:
19/2 =9 余 1
9/2 =4 余 1
4/2 = 2 余0
2/2 = 1 余0
1/2 = 0 余1
最开始得到的余数在低位,所以整数19的二进制表示方式就是 10011。
反过来要把二进制转化成十进制,二进制转化为十进制需要从右往左进行,每一位表示的就是2的幂的值,最右边的表示2的0次幂,再往左就是1次幂,再往左就是2次幂,以此类推。
如10011就等价于1 x 2^4 + 0 x 2^3 + 0 x 2^2 + 1 x 2^1 + 1 x 20.因为任何数的0次幂都是1,所以简化以后的结果是24 + 2^1 + 1,所以结果就是19.
在上一篇当中我们提供了一张表用于表示基本数据类型的信息,其中有一列表示这种数据类型能表示的最大值和最小值,其中除了布尔类型以外,其他数据类型都有一个最大值和最小值的范围。
字符的最大值和最小值是由Unicode决定,Unicode 0 表示的就是第一个Unicode 字符码。一个字符码其实跟具体的字符相对应的,它可以表示的就是一个单纯的字符,或者一个控制符(比如换行符),或者跟其他的字符码相结合表达一些新的意思。
从字节整形、短整形、整形、长整形的表现方式我们可以看出来负数比正数要多一个(因为0不能算是正数),之所以会这样其实主要还是归咎于整形的定义。
Page 40