1.存
1.从编写程序开始说起,源代码中初始化一个变量,在文本编辑器中显示的是10进制的数,
2.程序运行后,先在内存开辟相应空间,然后:
(开始实质用数据了)
一.将十进制转换为二进制,
如:10,是2的3次方加上2的一次方(二的 几次方转换为二进制1后面就是几个0),为1010,
二.看是大端序还是小端序
大端序指一个数中权重大的字节放小地址(以字节为单位,计算机中一字节一地址,一字节内部没有大小端)即大端小地址。
小端序指一个数中权重小的放小地址。即小端小地址。(大部分CPU的机子都是小端机)
例子:1000 1000 1111 1111 0000 0000 1010 1010四字节,放入空间,按小端放为:
1010 1010 0000 0000 1111 1111 1000 1000.注意,数字中权重大的在前如十进制16,权重大的是1.
三.放
将数据一字节一字节给地址对应的空间。
概念:类型取值的范围。
如char一般存储1字节数据,那么它可以表示2^8种可能,但有符号整形首位为符号位,以0为标准线,前后表示2^7-1个数。但首位为符号位,10000000和00000000都表示0就重复了,由于首位符号位原则,10000000被规定用于表示最小负数拓展1,即char可以表示-2^7~2^7-1,即-128到127.
-128是1,1000,0000,将它存到char事实是否可行呢,这里有个概念是截断,
作用:按序存数据时,若已经到达空间边界,剩下数据截断。如果是按小端存,截去最高位,1,正好是1000,0000.果然计算机源头是数学家。
那么截断的数据取出来还是正确的吗?当然,对于char类型,取出来数据1000,0000规定为-128,但是对于其他类型,空间内的1000,0000就不再是-128了,而是128(补码变反码变原码)。
--->所以截断会改变数据。且无法还原。
2.取
1.看是大小端,二进制取出来
2.看是什么类型,
根据类型规则(有符号整形负数补码变原码。。。。浮点数。。。。)进行转化为十进制数
注意:类型只在取数据需要,存不需要,本质是存二进制数