fillcharpascal 里 fillchar 语句怎么用?
fillchar 时间:2021-06-18 阅读:(
)
pascal中fillchar和sizeof问题
fillchar是字符填充用的,如FillChar(P, SizeOf(P), 0);
是以0去填充p这个数组,而sizeof则是求数组的长度,因此,当0变为1时,则以1去填充p这个数组,数组中的所有元素会被副值为1pascal语句 fillchar(num,sizeof(num),0);什么意思
fillchar Pascal
定义:Procedure FillChar ( Var X; Count : Longint; Value : Char or Byte);
意为:对一个Char类型的数组X进行Count次赋值,当Value为Char类型时,直接赋值;若Value为Byte类型时,将Value作为AscII赋值给每个单元。
被引申为:对一个内存块,每8个二进制位赋值Value,赋值Count次,长度为:Count*8个二进制位。
FillChar是一种很常用的函数,大部分赋值都是用FillChar完成的,因为对内存的块赋值,比使用循环要快得多。
全体赋值
我们一般是用fillchar对数组赋值,然后使用sizeof函数进行整体赋值
举例:
FillChar(a,sizeof(a),1);
当arrtype为
1.boolean 全部为true(1是非0值,表示true)
2.char 全部为#1
3.byte,shortint 每个元素是1字节量,全部为1
4.integer,word 每个元素是2字节量,全部为(257)10。
5.longint 每个元素是4字节量,全部为(16843009)10。
6.single 每个元素是4字节量,全部为2.36942782761724E-0038
integer和word全部为257结果为:
高字节 低字节
15 14 13 12 11 10 9 8 | 7 6 5 4 3 2 1 0
0 0 0 0 0 0 0 1 | 0 0 0 0 0 0 0 1
显然,得到的量就是(257)10=(0000000100000001)2。
single 全部为2.36942782761724E-0038
对于每个元素来讲,用1填充后的结果与longint类型的二进制码完全相同,但是, single类型对此数据的“解释”却完全不同:
A.最高位(第31位)是整个数的符号位,0为正, 1为负;
B.接着的8位(第30位至第23位)是用移码表示的阶码;
C.后面的23位(第22至第0位)表示尾数;
D.单精度量的值为:±2实际指数*实际尾数
①、若阶码=00000000,则实际指数=-126,实际尾数=(0.???????????????????????)2,其中的?代表相应位置上的二进制码(0或1);显然,在?全为0时, 这个单精度量的值为0;
②、若阶码大于00000000且小于11111111,则实际指数=阶码-(127)10=阶码-01111111,实际尾数=(1.???????????????????????)2
③、INF(无穷大)若阶码=11111111,尾数全0,则已达上界,被作为无穷大
④、浮点运算错误:若阶码=11111111,尾数在(00000000000000000000000, 10000000000000000000000)之间。
⑤、NAN(非数:Not A Number)若阶码=11111111,尾数在[10000000000000000000000, 11111111111111111111111]之间
下面,我们来分析二进制码为00000001000000010000000100000001的单精度数(single类型)的值是多少。
①最高位为0,表示正数;
②阶码为00000010,换成10进制数为2,则实际指数=2-127=-125,
③尾数为00000010000000100000001,实际尾数=1. 00000010000000100000001, 换成10进制数为1+2-7+2-15+2-23=1.00784313678741455078125,
④此单精度数的值是+2-125*1.00784313678741455078125≈2.36942782761724e-38
FillChar(a,sizeof(a),0);
执行fillchar(a,sizeof(a),0);
当arrtype为
1.real(其他实数类型差不多) 使得a中的元素全部成为0.0
2.integer(byte,word,longint,shortint都相同) 全部为0
3.boolean 全部为false
4.char 全部为#0pascal 里 fillchar 语句怎么用?
Fillchar通常用来给数据赋初值。
var a:array [1..10] of arrtype;
执行fillchar(a,sizeof(a),0);
当arrtype为
1.real(其他实数类型差不多) 使得a中的元素全部成为0.0
2.integer(byte,word,longint,shortint都相同) 全部为0
3.boolean 全部为false
4.char 全部为#0
这里使用了函数sizeof(a),其功能是返回变量a所占的总字节数,如上例返回:
当arrtype为
1.real sizeof(a)的值为60(每个元素占6个字节,10个元素共占60个字节)
single sizeof(a)的值为40(每个元素占4个字节,10个元素共占40个字节)
double sizeof(a)的值为80(每个元素占8个字节,10个元素共占80个字节)
extended sizeof(a)的值为100(每个元素占10个字节,10个元素共占100个字节)
comp sizeof(a)的值为80(每个元素占8个字节,10个元素共占80个字节)
2.integer(word) sizeof(a)的值为20 (每个元素占2个字节,10个元素共占20个字节)
3.byte (shortint) sizeof(a)的值为10 (每个元素占1个字节,10个元素共占10个字节)
4.longint sizeof(a)的值为40 (每个元素占4个字节,10个元素共占40个字节)
5.boolean sizeof(a)的值为10(每个元素占1个字节,10个元素共占10个字节)
6.char sizeof(a)的值为10 (每个元素占1个字节,10个元素共占10个字节)
所以例1的结果就是将数组a的所有元素(全部字节)用0来填充,要注意对不同类型的数据而言,对“0”的“解释”是截然不同的!对整型或实型量来讲,所有字节均为0,则该量也为0;对boolean型量(一个字节)来讲,0表示false(非0数表示true),则该量为false;对char型量(一个字节)来讲,0表示ASCII码值为0的字符,则该量为#0。
[例2]:将上例中的fillchar(a,sizeof(a),0)改为 fillchar(a,sizeof(a),1),结果如何呢?
执行fillchar(a,size(a),1);
当arrtype为
1.boolean 全部为true(1是非0值,表示true)
2.char 全部为#1
3.byte,shortint 每个元素是1字节量,全部为1
4.integer,word 每个元素是2字节量,全部为(257)10。
这是因为
在一个integer或word 型变量中,它的高、低两个字节均用1来填充(将10进制数1转化为二进制数00000001),结果为:
高字节 低字节
15 14 13 12 11 10 9 8 | 7 6 5 4 3 2 1 0
0 0 0 0 0 0 0 1 | 0 0 0 0 0 0 0 1
显然,得到的量就是(257)10=(0000000100000001)2。
如果,执行的是fillchar(a,size(a),171),结果又是怎样的?
因为(171)10=(10101011)2,所以,填充后为:
高字节 低字节
15 14 13 12 11 10 9 8 | 7 6 5 4 3 2 1 0
1 0 1 0 1 0 1 1 | 1 0 1 0 1 0 1 1
百纵科技湖南百纵科技有限公司是一家具有ISP ICP 电信增值许可证的正规公司,多年不断转型探索现已颇具规模,公司成立于2009年 通过多年经营积累目前已独具一格,公司主要经营香港服务器,香港站群服务器,美国高防服务器,美国站群服务器,云服务器,母机租用托管!美国CN2云服务器,美国VPS,美国高防云主机,美国独立服务器,美国站群服务器,美国母机。美国原生IP支持大批量订货 合作 适用电商 亚马逊...
近日快云科技发布了最新的夏季优惠促销活动,主要针对旗下的香港CN2 GIA系列的VPS云服务器产品推送的最新的75折优惠码,国内回程三网CN2 GIA,平均延迟50ms以下,硬件配置方面采用E5 2696v2、E5 2696V4 铂金Platinum等,基于KVM虚拟架构,采用SSD硬盘存储,RAID10阵列保障数据安全,有需要香港免备案CN2服务器的朋友可以关注一下。快云科技怎么样?快云科技好不...
易探云怎么样?易探云是国内一家云计算服务商家,致力香港服务器、国内外服务器租用及托管等互联网业务,目前主要地区为运作香港BGP、香港CN2、广东、北京、深圳等地区。易探云服务器均选择当下热门线路,比如CN2 GIA、BGP线路、CN2线路等,所有云主机支持月付,并且首月优惠,年付优惠,优惠后香港沙田云服务器/独立ip/香港CN2线路,每月仅18元,188元/年。点击进入:易探云官方网站地址1、香港...
fillchar为你推荐
bean是什么意思FServiceID是什么意思短信营销方案中秋节,国庆节短信营销方案sdfsdfsdfsdf小米手机投诉热线pat是什么格式怎么将自己做的PS图片保存为PAT格式?云输入法如何使用QQ云输入法?微信网页版登陆首页微信网页版怎么用?微信网页版怎么登陆?全局钩子加载全局钩子是什么,每次进入股票软件都说加载全局钩子,是中病毒了吗腾讯合作伙伴大会如何成为腾讯渠道合作伙伴?yui3yui 3 月9日 出的专辑的情报erp系统教程ERP系统怎么使用
yaokan永久域名经常更换 cn域名备案 新网域名管理 hostigation enom 荷兰服务器 mach5 腾讯云数据库 gomezpeer 光棍节日志 免费博客空间 北京主机 申请个人网页 183是联通还是移动 hostloc 100mbps raid10 四川电信商城 韩国代理ip 数据库空间 更多