注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

深圳卓越网络科技有限公司-卓越电子网络!

电子烧友┆电器维修┆音响制作┆软件开发┆网站建设┆网页设计┆源码开发┆资源共享!

 
 
 

日志

 
 

易语言各种数据类型在内存中的形态!  

2014-02-01 08:24:01|  分类: 编程开发资料 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
首先是基本数据类型
我们要把所有的数据类型转换成字节集;之后将字节集转换成比特位。之后,大家就一目了然了。

首先是字节型不需要解释。
短整数型   对应C++类型:SHORT
短整数可以容纳-32768到32767之间的数值。占用2个字节。
那么这2个字节到底装了什么呢?
我们拿短整数2676作为例子。
转换为字节集{116,10}
我们将字节集转换为比特位(01110100 00001010)
这时,把比特位的前后8个比特位调换位置,即得到(00001010 01110100)
短整数最高位(即最左边)是0,表示他是一个正数,最高位是1,表示他是一个负数
是负数的话,需要将其他为取反(即是1的位全部变成0,是0的为全部变成1)
然后计算出其他位比特位的十进制,并添加正负号。

整数型   对应C++类型:INT
整数型可以容纳-2147483648到2147483647之间的数值,占4个字节。
正数拿675535434作为例子
转换为字节集{74,218,67,40}
转换为比特位(01001010 11011010 01000011 00101000)
我们把比特位按照八个一组,颠倒位置(4-3-2-1变成1-2-3-4),得到(00101000 01000011 11011010 01001010)
一下面可以按照短整数对比特位的处理进行处理:
整数最高位是0,表示数字是正数,最高位是1,表示是负数
是负数的话,需要将其他为取反。然后计算出其他为的十进制值,并添加正负号
长整数型    对应C++类型:INT64
长整数型可容纳-9223372036854775808到9223372036854775807,占8个字节,其数据可能会变成双精度小数型,即溢出数据。
基本计算过程类似整数型。
小数型    对应C++类型:FLOAT
小数型可容纳4个字节的浮点小数。
拿数字3.1415926535为例
转换字节集{219,15,73,64}
转换为比特位(11011011 00001111 01001001 01000000)
我们把比特位按照八个一组,颠倒位置,得到(01000000 01001001 00001111 11011011)
小数的最高位是0表示数字是正数,最高位是1,表示是负数。
我们取出高2位到高9位(即最左边第二位到最左边第九位),即(10000000),转换为十进制为129
把的出来的数值加上-127:即129 + -127 = 2,我们把这个数叫做小数位指数,简称(指数)
取出高10位至底1位(即最左边第十位至最右面的第一位),(10010010 00011111 1011011-)
然后在取出数据的最高位添加一个1
通过指数,我们知道,小数点在二进制的第2位,我们添加一个虚拟的小数点(小数点是不存在的)

即得出11.0010010000111111011011
整数部分=11[2]=3[10]
小数部分=0010010000111111011011[2]=0.1415926535
(注意,如果整数部分你是用求次方的方法计算出来的话,小数部分也是用求次方的方法,只不过最高位的次方数是-1,高2位是-2,以此类推)
整数于小数相加,既得最后结果。
双精度小数型    对应C++类型:DOUBLE
双精度小数型可容纳8个字节
其于小数型的区别就是:
小数型的指数为8个比特位
双精度小数型的指数为11个比特位
小数型的数字位为23个比特位
双精度小数型的数字位为52位
计算方法一样。
逻辑型    对应C++类型:BYTE
逻辑型值占4个字节。。。。我在想,有必要吗????
浪费内存啊
逻辑型只能为“真”或者“假”
真=整数型的1
假=整数型的0
这样,大家就知道为什么逻辑型占4个字节了吧
日期时间型    对应C++类型:DATE
日期时间型用作记录日期及时间,尺寸为8个字节
实际上呢,日期时间型是双精度小数型 ,当数据是[1899年12月30日]的时候,将日期时间型转换为字节集再转换为双精度小数时,双精度小数等于0
数据中,每加减1日,双精度小数也加减1(一天=双精度小数1)
文本型
文本型一个内存指针,这个指针存放着连续数据,连续数据的最后一个字节为{0};如果这个指针是0,表示空文本
字节集型
字节集一个内存指针,这个指针存放着连续数据,数据的第一个字节永远是整数1,数据的第二个字节是字节集的数据长度,第三个字节以后直到刚刚取出的长度之间的数据,就是实际数据;如果指针为0,则表示字节集为0
复合数据类型(即自定义数据类型)
复合数据类型是一个内存指针,这个指针一定不是0;这个指针指向的内存区域是顺序排列的数据类型成员。如果任何一个成员所占用的内存空间小宇4个字节,则会自动对齐到4个字节。(文本或字节集存储的是其指针)
比如以下复合类型:字节A,短整数B,整数C,双精度小数D,其中A和B都被对齐到4字节
A占用4字节
B占用4字节
C占用4字节
D占用8字节
子程序指针型
子程序指针型即整数型
数组
数组类型的前四个字节是整数型,表示数组的维数;接下来是与维数相同个数的整数型数据,表示每一维的维数。
然后是数据本身。
数据本身有以下三种情况:
1、字节集或文本:储存的是数据指针
2、基本数据类型、菜单数据或窗口单元(这些数据是易语言库中自己处理,数据解释的复杂度更高),储存数据本身。
3、复合数据类型:储存的是与复合数据类型结构相同的指针数组。
  评论这张
 
阅读(47)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017