数字逻辑设计小班讨论第一次讨论报告_第1页
数字逻辑设计小班讨论第一次讨论报告_第2页
数字逻辑设计小班讨论第一次讨论报告_第3页
数字逻辑设计小班讨论第一次讨论报告_第4页
数字逻辑设计小班讨论第一次讨论报告_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、数字逻辑设计及应用第1次讨论课报告讨论组(2班314)选课号姓名指导教师学号2015年10月8日1. 查阅资料(书籍,网络),说明计算机中整数(char)和小数(float)的表示方法。使用C语言编程调试测试分析有符号字节型整数(char)和浮点数(float)表示方法(可选)。目的:通过二进制编码的学习,同学们有了理论的认识。本题目将通过实际验证,掌握真实情况下计算机系统的数的表示。要完成本题目,学生需要查找资料,如能通过C语言编程验证,查看内存中数的实际存储内容,将增强对计算机系统和数制的理解,并在以后的开发工作中打下基础。分工:1.1计算机中的整数(char)的表示为整数在计算机内表示:

2、符号位在最高为,用0表示正数,1表示负数。其他位为数值。(1)、数值部分用二进制数的绝对值表示-这种就是原码表示法。(2)、正数的反骂与原码相同,负数的反码是保持符号位为1,然后把对应的正数按位取反。比较少用譬如一个数字是29 -011101 -> -29就是100010。这个用于计算很麻烦,所以很少用(3)、补码。正数的补码和原码相同,负数的补码将原码除符号位外按位取反加1得到的譬如+57 = 00111001, -57 = 11000111.这个逻辑简单,可以简化运算,一般都采用补码来表示正数的。1.2计算机中的小数(float)的表示通常有两种方法:一种是规定小数点位置固定不变,称

3、为定点数。另一种是小数点的位置不固定,可以浮动,称为浮点数。在计算机中,通常是用定点数来表示整数和纯小数,分别称为定点整数和定点小数。对于既有整数部分、又有小数部分的数,一般用浮点数表示。1.2.1详细介绍: (1)、定点整数,在定点数中,当小数点的位置固定在数值位最低位的右边时,就表示一个整数。请注意:小数点并不单独占1个二进制位,而是默认在最低位的右边。定点整数又分为有符号数和无符号数两类。 (2)、定点小数,当小数点的位置固定在符号位与最高数值位之间时,就表示一个纯小数。 因为定点数所能表示数的范围较小,常常不能满足实际问题的需要,所以要采用能表示数的范围更

4、大的浮点数。 (3)、浮点数,在浮点数表示法中,小数点的位置是可以浮动的。 在大多数计算机中,都把尾数s定为二进制纯小数,把阶码p定为二进制定点整数。尾数S的二进制位数决定了所表示数的精度;阶码p的二进制位决定了所能表示的数的范围。为了使所表示的浮点数既精度高、又范围大,就必须合理规定浮点数的存储格式。 1.2.2 举例12.341010 = 1101   +  2100   +  310-1   +  410-2   = 12() 在

5、比如二进制:101.112 = 122 + 021 + 120 + 12-1 + 12-2 = 4 + 0 + 1 + + = 5()。在 IEEE 标准中,浮点数是将特定长度的连续字节的所有二进制位分割为特定宽度的符号域,指数域和尾数域三个域,其中保存的值分别用于表示给定二进制浮点数中的符号,指数和尾数。这样,通过尾数和可以调节的指数(所以称为"浮点")就可以表达给定的数值了。具体的格式:符号位阶码尾数长度  float   182332double &

6、#160;1115264浮点数在32位机子上有两种精度,float占32位,double占64位。我们应该不要特殊看到浮点数的内存存储形式,他跟整数没有什么区别,只是在这4字节或者8字节里有3个区域,整数有符号只有符号位及后面的数值,之所以最高位表示有符号数的符号位。原因之一在于0x7fffffff位最大整数,为整个32位所能表示的最大无符号整数0xffffffff的一半减一,也就是:比如1字节:无符号是:0xff,有符号正数为:(0, 127,负数为-128, 0)。在8位有符号时,肯定内存值大于等于: 0x80。二进制就是1000 0000,比他大,只会在低7位上变化,最高位已经是1了,变

7、了就变小了。所以这里也是一个比较巧用的地方,一举两得。那么,32位浮点数 的换算:1. 从浮点数到16进制数float  var = 5.2f;就这个浮点数,我们一步一步将它转换为16进制数。首先,整数部分5,4位二进制表示为:0101。其次,小数部分0.2,我们应该学了小数转换为二进制的计算方法,那么就是依次乘以2,取整数部分作为二进制数,取小数部分继续乘以2,一直算到小数结果为0为止。那么对0.2进行计算:0.22 = 0.42 = 0.82 = 1.6(0.6)2 = 1.2(0.2)2 = 0.42 = 0.82 = 1.6(0.6) 2 = 1.2 . .

8、0;    0              0            1                     1  &

9、#160;               0             0             1                  1   . .    因此,这里把0.2的二进制就计算出来了,结果就为:0.00110

10、011. . 这里的省略号是没有办法计算完。二进制序列无限循环,没有到达结果为0的那一天。那么此时我们该怎么办?这里就得取到一定的二进制位数后停止计算,然后舍入。我们知道,float是32位,后面尾数的长度只能最大23位。因此,计算结束的时候,整数部分加上小数部分的二进制一共23位二进制。因此5.2的二进制表示就为:101.00110011001100110011一共23位。此时,使用科学计数法表示,结果为:1.010011001100110011001110 22由于我们规定,使用二进制科学计数法后,小数点左边必须为1(肯定为1嘛,为0的话那不就是0.xxxx*sxxx 了,这样没

11、有什么意义),这里不能为0是有一个很大的好处的,为什么?因为规定为1,这样这个1就不用存储了,我们在从16进制数换算到浮点数的时候加上这个1就是了,因为我们知道这里应该有个1,省略到这个1的目的是为了后面的小数部分能够多表示一位,精度就更高一些了哟。那么省略到小数点前面的1后的结果为:.010011001100110011001101022这里后面蓝色的0就是补上的,这里不是随便补的一个0,而是0.2的二进制在这一位上本来就应该为0,如果该为1,我们就得补上一个1.是不是这样多了一位后,实际上我们用23位表示了24位的数据量。有一个位是隐藏了,固定为1的。我们不必记录它。但是,在对阶或向右规格

12、化时,尾数要向右移位,这样被右移的尾数的低位部分会被丢掉,从而造成一定的误差,因此要进行舍入处理。 常用的舍入方法有两种:一种是“0舍1入”法,即如果右移时被丢掉数位的最高位为0则舍去,为1则将尾数的末位加“1”,另一种是“恒置1”,即只要数位被移掉,就在尾数的末位恒置“1”。举个例子:123.456的二进制表示:123.456的二进制到23位时:111 1011.0111 0100 1011 1100 01.后面还有依次为01.等低位,由于最高位的1会被隐藏,向后扩展一位如果不做舍入操作则结果为:1.11 1011 0111 0100 1011 1100

13、0;010 26但是经过舍入操作后,由于被舍掉的位的最高位是1,或者“恒置1”法,最后面的0都应该是1。因此最终就应该是:1.11 1011 0111 0100 1011 1100 110 26在这里需要说明,不管是恒置1,还是0舍1入法,其根本都是为了减小误差。 尾数在这里就计算好了,他就是 01001100110011001100110 。再来看阶数,这里我们知道是22次方,那么指数就是2。同样IEEE标准又规定了,因为中间的 阶码在float中是占8位,而这个 阶码又是有符号的(意思就是说,可以有2-2次方的形式)。f

14、loat 类型的 偏置量 Bias = 2k-1 -1 = 28-1 -1 = 127 ,但还要补上刚才因为左移作为小数部分的 2 位(也就是科学技术法的指数),因此偏置量为 127 + 2=129 ,就是 IEEE 浮点数表示标准:        V = (-1)s × M × 2E     &#

15、160;  E = e - Bias中的 e ,此前计算 Bias=127 ,刚好验证了 E = 129 - 127 = 2 。这里的阶码就是12910 ,二进制就是:1000 00012 。因此,拼接起来后:1000 0001 01001100110011001100110|    8位  | | - 23位 - |一共就是31位了,这里还差一位,那就是符号位,我们定义的是5.2,正数。因此这里最高位是0

16、,1表示负数。而后结果就是:  0 1000 0001 010011001100110011001101位 |  8位  | | - 23位 - |到这里,我们内存里面的十六进制数产生了,分开来看:0 100 0000 1 010 0110 0110 0110 0110 0110    4       0       

17、 A        6       6        6        6        6因此,我们看到的就是0x40A66666, 此就是5.2最终的整数形式。 2.从十六进制数到浮点数我们还是可以用上面5.2的例子,再将0x40A66666换算回去,用同

18、样一个例子,结果更直观,逆运算更好理解。那我们就开始吧。首先,要还原回去,必须将这个16进制用我们的计算器换算成二进制:0 100 0000 1 010 0110 0110 0110 0110 011 0首先确定符号,这里是0,因此是正数。其次换成10进制就是:12910知道这里需要129 - 127 = 2得到指数,得到了指数,我们便知道我们小数点是向哪个方向移动了好多位。脑子里已经有了一个科学计数法的锥形。再次把那的23位提取出来,这里不把它换成10进制,因为我们指数是表示的二进制上移动了多少位,底数是2,而不是10。这里因为之前我们都知道有个固定的1给省略了

19、,因此这里要给加上去。加上去之后:1 010 0110 0110 0110 0110 011 0这里是24位,我们先不管,小数点添进去:1 . 010 0110 0110 0110 0110 011 0 *10 22 然后将科学计数法变换成普通的二进制小数:1 01 . 0 0110 0110 0110 0110 011 0就可以把整数部分换成十进制了:1 01 . 0 0110 0110 0110 0110 011 0   3.

20、60; xxxxxxxxxxxxxxxxxxxxxxxxxxxxx我们知道了,整数部分是5,后面的小数部分再进行逆运算:这里我们就应该想想小数到二进制数是乘法,这里逆运算就应该除以2,因此就可以表示为:0 .    0 0110 0110 0110 0110 011 00 + 02-1 + 02-2 + 12-3 + 12-4 + 02-5 + 02-6 + 12-7 + . . + 02-21 这样一个式子,我们算出结果来,放在浮点数里:5.1999998。因此我

21、们可以看到精度已经有损失了。 float var = 0.5, 算16进制数。首先,0.5整数部分为0,这里就不处理了。其次,0.5小数部分,二进制表示为:0.1这里是0.1,将尾数补满23位则是:0.10 0000 0000 0000 0000 0002由于小数点左边是0,因此需要向右移动一位 ,因此:1.0 0000 0000 0000 0000 000022-1这里1又被省略掉,所以23位全部变成了0 ,因此:.00 0000 0000 0000 0000 000022-1然后,因为这里指数是-1,因此阶码就是:-1 + 127 = 126 = 0111 1

22、1102这样一来,阶码就有了,由于又是正数,那么组合起来:0 01111110 00000000000000000000000这样一来,最终的16进制数则为:0x3f000000.4. 64位浮点数 的换算:一是,中间的阶码在double中占有11位,因此就不是+127了,而是加上1023,因为11位能表示的最大无符号数是2047,因此有符号范围-1024, 1023。二是,尾数是52位,因此精度更高,能表示的数也就越大。我们在换算5.2的时候,后面的小数二进制+前面的5的二进制再省略一位后的总位数要填满52位。1.3 C语言编程调试中,可以用floor()函数来

23、判断,它将返回参数的整数部分,所以:#include double x;if (floor(x)=x) puts("是一个整数");else puts("是一个小数");目的:通过二进制编码的学习,同学们有了理论的认识。本题目将通过实际验证,掌握真实情况下计算机系统的数的表示。要完成本题目,学生需要查找资料,如能通过C语言编程验证,查看内存中数的实际存储内容,将增强对计算机系统和数制的理解,并在以后的开发工作中打下基础。2. 查阅资料(书籍,网络),说明汉字的编码方法,并说明计算机中你的名字的是如何表示的。使用C语言或其他编程调试工具测试是否正确。目的:

24、通过编码的学习,同学们有了理论的认识。本题目将通过实际验证,掌握真实情况下计算机系统中汉字的表示。要完成本题目,学生需要查找资料,如能通过C语言编程验证,查看内存中汉字的实际存储内容,将增强对计算机系统和汉字编码的理解,并在以后的开发工作中打下基础。分工:2.1计算机中普通汉字的主要编码方式。(1)汉字交流码汉字交流码主要是用作汉字信息交流的。以国家标准局1980年公布的信息交流用汉字编码字符集根本集(代号为GB2312-80)规矩的汉字交流码作为国家标准汉字编码,简称国标码。国标GB 2312-80规矩,一切的世界汉字和符号组成一个94×94的矩阵。在该矩阵中,每一行称为一个“区”

25、,每一列称为一个“位”,这样就构成了94个区号(0194)和94个位号(0194)的汉字字符集。国标码中有6763个汉字和628个其他根本图形字符,合计7445个字符。其间规矩一级汉字3755个,二级汉字3008个,图形符号682个。一个汉字地点的区号与位号简略地组合在一起就构成了该汉字的“区位码”。在汉字区位码中,高两位为区号,低两位为位号。因而,区位码与汉字或图形符号之间是一一对应的。一个汉字由两个字节代码表明。(2)汉字机内码 汉字机内码又称内码或汉字存储码。该编码的作用是共同了各种异样的汉字输入码在核算机内的表明。汉字机内码是核算机内部存储、处置的代码。核算机既要处置汉字,又要处置英文

26、,所以必须能差异汉字字符和英文字符。英文字符的机内码是最高位为0的8位ASCII码。为了区别,把国标码每个字节的最高位由0改为1,其他位不变的编码作为汉字字符的机内码。一个汉字用两个字节的内码表明,计算机显现一个汉字的进程首先是依据其内码找到该汉字字库中的地址,然后将该汉字的点阵字型在屏幕上输出。汉 字的输入码是多种多样的,同一个汉字若是选用的编码方案异样,则输入码就有能够不相同,但汉字的机内码是相同的。有专用的核算机内部存储汉字运用的汉字内 码,用以将输入时运用的多种汉字输入码共同变换成汉字机内码进行存储,以便利机内的汉字处置。在汉字输入时,依据输入码经过核算机或查找输入码表完结输入 码到机

27、内码的变换。如汉字世界码(H)8080(H)汉字机内码(H)。(3)汉字输入码汉字输入码也叫外码,是为了经过键盘字符把汉字输入核算机而描绘的一种编码。英文输入时,想输入什么字符便按什么键,输入码和内码是共同的。而汉字输入规矩异样,能够要按几个键才干输入一个汉字。汉字和键盘字符组合的对应方法称为汉字输入编码方案。汉字外码是对准异样汉字输入法而言的,经过键盘按某种输入法进行汉字输入时,人与核算机进行信息交流所用的编码称为“汉字外码”。关于同一汉字而言,输入法异样,其外码也是异样的。例如,关于汉字“啊”,在区位码输入法中的外码是1601,在拼音输入中的外码是a,而在五笔字型输入法中的外码是KBSK。

28、汉字的输入码品种繁复,大致有4品种型,即音码、形码、数字码和音形码。(4)汉字字形码汉字在显现和打印输出时,是以汉字字形信息表明的,即以点阵的方法构成汉字图形。汉字字形码是指断定一个汉字字形点阵的代码(汉字字形码)。普通选用点阵字形表明字符。当前遍及运用的汉字字型码是用点阵方法表明的,称为“点阵字模码”。所谓“点阵字模码”,就是将汉字像图画相同置于网状方格上,每格是存储器中的一个位,16×16点阵是在纵向16点、横向16点的网状方格上写一个汉字,有笔画的格对应1,无笔画的格对应0。这种用点阵方式存储的汉字字型信息的调集称为汉字字模库,简称汉字字库。一般汉字显现运用16×16

29、点阵,而汉字打印可选用24×24点阵、32×32点阵、64×64点阵等。汉字字形点阵中的每个点对应一个二进制位,1字节又等于8个二进制位,所以16×16点阵字形的字要运用32个字节(16×16÷8字节32字节)存储,64×64点阵的字形要运用512个字节。在16×16点阵字库中的每一个汉字以32个字节寄存,存储一、二级汉字及符号共8836个,需求282.5KB磁盘空间。而用户的文档假定有10万个汉字,却只需求200KB的磁盘空间,这是由于用户文档中存储的仅仅每个汉字(符号)在汉字库中的地址(内码)2.1.2字形码显

30、示器是由一列一列的点阵排列而成的,为了显示字,需要将显示器划分成一小块一小块,就像小时候的语文作业本中划出的方格一样,每个方格中填充一个字。方格的划分方法有很多种,如16x16点阵、24x24点阵、32x32点阵、48x48点阵等。图1为在16x16点阵中显示一个汉字“你”,位代码“1”指示点亮,在不同的位置点亮点阵,可以得到不同的汉字。将位代码中按行每8位取为一个字节,就得到了汉字的字模信息。以第1行为例,0000100010000000可以表示成00001000和10000000两个字节,分别将该二进制数表示成十六进制数得到0x08和0x80,其他行依次类推。可见,一个汉字的字模信息包含3

31、2字节内容,字模信息常称为字形码。知道了如何获得一个汉字的字形码,那么,可不可以将一些常见汉字的字形码按照一定的次序保存到一个专门的文件下面,当需要显示某个汉字时,直接到该文件中调用该汉字的字形码来控制显示器显示呢?当然可以,在UCDOS和CCDOS中,文件名为HZK16就是完成这个功能的,它包含有6763个汉字,682个符号,其中一级汉字有3755个,按声序排列,二级汉字有3008个,按偏旁部首排列。            图1 “你”字模图这需要我们来认识区位码。因为HZ

32、K16中的字是按区位码排列的,所以我们有必要弄明白区位码是什么。这好比考试的时候,老师拿一本厚厚的书到班上来,叫每个人把自己名字对应的号码查出来填到志愿表上,这个要查的号码就是区位码。在GB2312-80代码表中,纵向分为093,共94行。将行号称为区号,列号称为位号,分别有94个区和94个位。区号和位号用十进制表示,不足两位前面补0。这样每个汉字或符号都可用4位十进制表示。每一区共有94个汉字,而位记录该汉字在该区中的具体位置。知道了一个字的区位码,就可以找到该字在HZK16中的排列次序:94(区号-1)+(位号-1),因为每个汉字占32字节,所以其起始位置为:94(区号-1)+(位号-1)

33、 32,从该位置依次取出32字节就得到该字的字形码。再次来认识机内码。SACII就是英文字符对应的机内码,由8位组成,可以保存28=256个字符。因为汉字数量比较多,用一个字节无法区分,因此国家标准局采用两个字节存放一个汉字的内码,称为国标码。国标码是汉字信息交换的标准编码,但因其前后字节的最高位为0,与ASCII码发生冲突,如“保”字,国标码为31H和23H,而西文字符“1”和“#”的SCII也为31H和23H,现假如内存中有两个字节为31H和23H,那么这到底是一个汉字“保”,还是两个西文字符“1”和“#”,出现了二义性。为了避免出现二义性,将国标码每个字节最高位置1,得到机内码。可见,机

34、内码和国标码存在如下关系:机内码=国标码+8080H。那么区位码和机内码是不是也存在一个类似的简单的关系式呢?当然存在,否则也不必花这么大的功夫介绍机内码啊机内码和区位码满足如下关系式:机内码=区位码+A0A0H。(当然,我们通过这两个关系式,也可以得到关系式:国标码=区位码+2020H。这里,区位码加20H的原因,是因为国标码只使用低7位进行编码,最位为0,而ASCII前32个字符为控制字符,为了避免与ASCII控制字符冲突,在区位码的基础上加上32,即20H。其实,考虑到与ASCII冲突的问题,机内码在国标码的基础上,已经将最高位置1了,即加了80H,因此,机内码与区位码再加20H,实属多

35、余。)    2.1.3获得汉字内码的方式    方法一:见    方法二:下载内码查看器。    方法三:编程实现 这里我选用的方法是,网址:2.2“白欣逸”的计算机表示通过机器内码显示出“白”字:“白”字的国标码为B0D7。“白”字其机内码十进制为45271。根据关系式:机内码=区位码+A0A0H,可得“白”的区位码为1655 ,即区号为16,位号为55。接着求出“白”在HZK16中的排列次序为94(区号-1)+(位号-1)=94(

36、16-1)+(55-1)=1464 ,乘上每个汉字所占的字节数得到该字的位置为 146432=46848 ,从46848中依次取出32字节就得到“ 白”的字形码,根据该字形码控制显示器就可以显示“白”了。通过机器内码显示出“欣”字:“欣”字的国标码为D0C0。“欣”字其机内码十进制为53440。根据关系式:机内码=区位码+A0A0H,可得“白”的区位码为 4832,即区号为48,位号为 32。接着求出“欣”在HZK16中的排列次序为94(区号-1)+(位号-1)=94(48-1)+(32-1)= 4449 ,乘上每个汉字所占的字节数得到该字的位置为 444932=142368 ,从142368

37、中依次取出32字节就得到“ 欣”的字形码,根据该字形码控制显示器就可以显示“欣”了。通过机器内码显示出“逸”字:“逸”字的国标码为D2DD。“逸”字其机内码十进制为 53981。根据关系式:机内码=区位码+A0A0H,可得“逸”的区位码为5061,即区号为50,位号为61。接着求出“逸”在HZK16中的排列次序为94(区号-1)+(位号-1)=94(50-1)+(61-1)=4621,乘上每个汉字所占的字节数得到该字的位置为 462132=147872 ,从147872中依次取出32字节就得到“ 逸”的字形码,根据该字形码控制显示器就可以显示“逸”了。2.3编程实现下面是在vs2013中C语言

38、实现,注意将HZK16文件下载后放到运行文件夹中:#include "stdio.h"#include "stdlib.h"#include <conio.h>/* 得到汉字字符的字模信息,存入数组* 参数:* *c:要得到字模信息的字符指针* buffer : 存储字模信息的数组* 无返回值*/void getHzKCode(char *c, char buff)unsigned char qh, wh;unsigned long offset;FILE *HZK;if (fopen_s(&HZK, "hzk16"

39、;, "rb")printf("Can't open haz16,Please add it?");_getch();exit(0);qh = *(c)-0xa0;wh = *(c + 1) - 0xa0;offset = (94 * (qh - 1) + (wh - 1) * 32L;fseek(HZK, offset, SEEK_SET);fread(buff, 32, 1, HZK);printf("qh:%d,wh:%d,offset:%ldnr", qh, wh, offset);/* 根据字模信息输汉字字符* 参数

40、:* *mat:字模指针* *c1 : 字模中为1的点显示的字符,也就是前景字符* *c2 : 字模中为0的点显示的字符,也就是背景字符* 无返回值*/void printHzKChar(char *mat, char *c1, char *c2)int i, j, k;for (i = 0; i<16; i+)for (j = 0; j<2; j+)for (k = 0; k<8; k+)if (mati * 2 + j & (0x80 >> k)printf("%s", c1);else printf("%s",

41、 c2);printf("n");/* 主函数*/void main()char *HzkC = "白"char *HzkC1 = "*"char *HzkC2 = " "char *hzk;char buffer232;getHzKCode(HzkC, buffer2);hzk = buffer2;printHzKChar(hzk, HzkC1, HzkC2);_getch();附表:“白”字输入法编码五笔86版五笔98版郑码太空码母字码谁的码RRRRRRRRNKBGTYMCBHQT码根码表形码双拼仓颉四角全拼RKDJBIBLHA26000BAI汉字内码GBK编码unicode编码大五码(Big5)区位码(GB2312)utf8编码10位unicodeB0D7767DA5D51655%E7%99%BD30333“欣”字输入法编码五笔8

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论