首先了解几个概念: 1、字(Byte)节是长度单位。位(bit)也是长度单位。
2、基本数据类型 所占用空间大小:byte b; 1字节、short s; 2字节、int i; 4字节、long l; 8字节、char c; 2字节(C语言中是1字节)、float f; 4字节、double d; 8字节、boolean bool; false/true 1字节
3、因为计算机通信和存储的时候都是以010101这样的二进制数据为基础的,这儿的一个0和1占的地方就叫bit(位),即一个二进制位。 1Byte=8bit 1KB=1024B 1MB=1024KB(2的十次方)
4、我们常用的进制包括:二进制、八进制、十进制与十六进制,它们之间区别在于数运算时是逢几进一位。比如二进制是逢2进一位,十进制也就是我们常用的0-9是逢10进一位。可以用补码相互转换。
5、为什么使用补码进行计算? 在计算机系统中,数值一律用补码来表示和存储。原因在于,使用补码,可以将符号位和数值域统一处理;同时,加法和减法也可以统一处理。此外,补码与原码相互转换,其运算过程是相同的,不需要额外的硬件电路。 补码的特性:一个负整数(或原码)与其补数(或补码)相加,和为模;对一个整数的补码再求补码,等于该整数自身;补码的正零与负零表示方法相同。
6、java里数据类型低精度可以自动转向高精度,而相反怎需要强制类型转换,且会丢失精度。 常见例子:byte f=(byte)130 数据130默认是int类型的十进制数据 第一步十进制的130转换成二进制数据 1 0 0 0 0 0 1 0 第二步130是int类型是占4个字节的,所以在内存的表现形式是 00000000 00000000 00000000 10000010 做了截取后的结果为 10000010 通过观察最高位符号位是1,这是一个负数,因为在计算机中所有的数据都是以补码的形式出现的所以要算它的补码 原码:1 0000010 原码变反码,最高位符号位不变,其他数值位1变0,0变1得反码 反码:1 1111101 反码变补码就是反码加1得 补码;1 1111110 最终的看到的结果就是 1 1111110最高为是符号位不运算,数值为转化为十进制是64+32+16+8+4+2=126符号位负 所以为-126