计算机中的信息由电路的高低电平来表示,因而计算机中的信息表示都是二进制的。所以我们将身边常用的数据一律转化为0,1代码放入计算机中进行处理。计算机总线位宽决定了计算机一次传输中能表示的二进制数最大位数。就目前而言,计算机以64位为主流,因而我们电脑处理器一次读取数据的位数最大为64位二进制数。比如十进制的1,在计算机中就表示为63个0加一个1.
在计算机中为了定义数据的大小,一位二进制数称之为字bit,八位二进制数定义为一个字节byte。对于64位计算机来讲,我们使用可以提供64位的数据位宽,因此具有8个字节的大小。对于计算机中常见的数据类型,以JAVA为例,char为2个字节,byte为一个字节,short为2个字节,int为4个字节,long为8个字节,float为4个字节,double为8个字节(参考自《Thinking in Java》 2010年5月第1版第14次印刷)。所以当这些数据被存储在内存中时,程序会为数据分配相应的位宽,并且在程序运行过程中,为了有效利用空间,存储在栈中的数据在内存中是相邻放置的,因此在极为必要在对象声明之时明确它们的大小。我相信你已经预见到类型强转所带来的风险了,不光是8字节转4字节时数据丢失的问题,更有4字节转8字节时内存管理和调整的问题。
负数的表示
计算机中如何表示负数是一个很有意思的问题。为