计算机是如何存储数据的
数值类型的数据(整数、浮点数)
字符类型的数据(字符串)
数据类型:
整型(byte\short\int\long)、浮点型(float\double)、字符型(char)、布尔型(boolean) java
整型(short\int\long)、浮点型(float\double)、字符型(char)、布尔型(bool) c
计算机如何定义数值类型的数据------------------>数据类型:决定数据在内存当中的存储形式
int a = 10; int类型的数据===》要求在内存当中开辟32bit的内存空间 1bit符号 31bit数值 00000000000000000000000000001010
short b = 10; short类型的数据===》要求在内存当中开辟16bit的内存空间 1bit符号 15bit数值 0000000000001010
float f = 10.0; float类型的数据===》要求在内存当中开辟32bit的内存空间 1bit符号 8bit阶位 23bit数值位
定点数/浮点数
10.
985.211 * 10^3 = 9852.11 * 10^2
以下数据的定义都是byte类型的数据
byte a = 10; 1bit符号 7bit数值位
byte b = -10;
原码反码和补码:
源码:数据直接转化成二进制,并且最高位0代表整数 1代表负数
00001010(源码)
+ 10001010(源码) (加减符号位也参与运算)
------------------------------------
10010100--------------------------->惊天的BUG---------------------->计算机机存储数据一定不会存储数据的源码,因为源码两个相反数相加的结果不是0
反码:
正数的反码 = 源码
负数的反码 = 源码的符号位不变,其余位按位取反
a:00001010(反码)
+ b:11110101(反码)
---------------------------------
11111111(反码)------->和源码转反码是一样的---------->10000000(源码)----------> -0
计算机机存储数据一定不会存储数据的反码,因为反码两个相反数相加的结果存在正负0的问题
补码:
正数的补码 = 反码 = 源码
负数的补码 = 反码的末尾+1
a:00001010(补码)
+ b:11110110(补码)
-------------------------------
100000000(补码)-----------数据类型决定数据在内存当中的存储形式,所以截取后8位--------》00000000--------------->0
计算机存储数据,采用的是补码进行存储!!!
计算进位之间的转换
二进展、八进制、十六进制之间的转换
二进制:0、1
八进制:0,1,2,3,4,5,6,7
十进制: 0,1,2,3,4,5,6,7,8,9
十六进制: 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F
十进制如何转二进制:
取余数法 一直除以二直到除到零每次取余数逆序写出来
拼凑法 2^12 2^11 2^10 2^9 2^8 2^7 2^6 2^5 2^4 2^3 2^2 2^1 2^0 2^-1 2^-2 2^-3 2^-4
分别为
4096 2048 1024 512 256 128 64 32 16 8 4 2 1 0.5 0.25 0.125
1 1 1 1 0 1 1 1 0 1 1
123.6875 = 1111011.1011
二进制---》八进制
011 110 000 010.011 010
3 6 0 2 . 3 2 -------->3602.32
八进制 ---》二进制
7 4 2 . 6 1
111 100 010. 110 001 -------------->111100010.110001
二进制---》十六进制
0011 1101 0100 1000. 1111 0010
3 D 4 8 . F 2 ------------->3D48.F2
十六进制---》二进制
A E 8 6 . 1
1010 1101 1000 0110 . 0001 ------------->1010110110000110.0001
进制如何进行书写
二进制: (010100001010)2 10100001010B
八进制: (101010010010)8
十六进制: (101010010010)16 0x101010010010
十进制: (010100001010)10 010100001010D