平时最常见的就是整形家族和浮点型家族了,然而他们的存储方式各有差异
整形:int(4 byte) long(>=4 byte) short(2 byte) long long(8 byte) char(1 byte)
整型:
在整形中分为正整数,负整数,要想知道整数如何让存储首先要认识的是原码,反码,补码
原码:就是直接转化为二进制的数
反码:原码的基础上符号位不变,其余的按位取反
补码:在原码的基础上,最后一位数+1
在这里说一下:正整数的原码,反码,补码都相同
例子:
int a=10
这里10的二进制就是1010,在计算机存储中存的就是a的补码,(因为正整数的原码,反码,补码都相同)所以就是 00000000 00000000 00000000 00001010(因为是把10存放到a的,a是4个字节,一个字节等于8个bit位,这就是最终存储到内存的内容)
int b= -10
这里-10的二进制就是 10000000 00000000 00000000 00001010 可以看到第一位数字是1,这就是符号位,正数的符号位为0,负数的符号位是1。这里直接转成2进制得到的是原码,最终是把补码存储到内存的,所以要经过转化
原码:10000000 00000000 00000000 00001010 (直接转化为2进制)
反码:111111111 111111111 111111111 111110101(符号位不变,其余的取反)
补码:111111111 111111111 111111111 111110110 (最后的一位+1)
111111111 111111111 111111111 111110110 这就是-10最终存储到内存的内容
这里要说明一下,对整数的操作都是对补码进行操作的,最后打印到屏幕的是原码 int long short long long 都是这样,只不过是字节长短不同罢了
而char是字符类型,也是属于整形的,那是因为char最终存储的是ASCLL码值到内存的,而ASCLL码是正数,所以也归整数家族了,这里的char是 一个字节 也就是8个bit位,在计算时会有些差异,其取值范围在( -128 ~ 127之间)
char只能容纳8个bit位,也就是一个byte(字节)
以上就是整型的的存储了(还是那句话,存储在内存的是补码,加减也是操作补码,最终打印出来的是原码)!!!