1 / 34

program s401; var p,q:array[0..5] of integer; i,x,y:integer; begin y:=20;

program s401; var p,q:array[0..5] of integer; i,x,y:integer; begin y:=20; for i:=0 to 4 do read(p[i]); readln; q[0]:=(p[0]+p[1])+(p[2]+p[3]+p[4]) div 7; q[1]:=p[0]+p[1] div ( ( p[2]+p[3] ) div p[4] ) ; q[2]:=p[0]*p[1] div p[2]; q[3]:=q[0]*q[1];

gin
Download Presentation

program s401; var p,q:array[0..5] of integer; i,x,y:integer; begin y:=20;

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. program s401; var p,q:array[0..5] of integer; i,x,y:integer; begin y:=20; for i:=0 to 4 do read(p[i]); readln; q[0]:=(p[0]+p[1])+(p[2]+p[3]+p[4]) div 7; q[1]:=p[0]+p[1] div ((p[2]+p[3]) div p[4]); q[2]:=p[0]*p[1] div p[2]; q[3]:=q[0]*q[1]; q[4]:=q[1]+q[2]+q[3]; x:=(q[0]+q[4]+2)-p[(q[3]+3) mod 4]; if (x>10) then y:=y+(q[1]*100-q[3]) div (p[p[4] mod 3]*5) else y:=y+20+(q[2]*100-q[3]) div (p[p[4] mod 3]*5); writeln(x,',',y); end. /*注:本例中,给定的输入数据可以避免分母为 0 或下标越界。 输入:6 6 5 5 3 第十三届第一题

  2. 数的码制

  3. D7 D6 D5 D4 D3 D2 D1 D0 符号位 数值位 0 正数 D7 = 1 负数 机器数 真值 01010010B = +82 82 11010010B = 8位带符号数:

  4. 0 正数 最高位为符号位 1 负数 二、带符号数的三种表示方法 1. 原码 后面n-1位是数值。 [+4]原= 0 000 0100B [4]原= 1 000 0100B

  5. 原码的特点: (1) 数值部分即为该带符号数的二进制值。 (2) “0”有+0和- 0之分,若字长为八位,则:(+0)原=0 0000000,(–0)原=1 0000000 (3) 8位二进制原码能表示的数值范围为:01111111~11111111,即+127~–127。

  6. 2. 反码 正数的反码与其原码相同。 负数的反码除符号位外将原码求反。 [+5]原= [+5]反= 0 000 0101B [5]原= 1 000 0101B [5]反= 1 111 1010B

  7. 反码的特点: (1) “0”有+0和-0之分。 (2) 8位二进制反码所能表示的数值范围为+127~–127, 一般地,对于n位字长的计算机来说,其反码表示的数值范围为+2n-1–1~–2n-1+1。 (3) 8位带符号数用反码表示时,若最高位为“0”(正数)则后面的7位即为数值;若最高位为“1”(负数), 则后面7位表示的不是此负数的数值,必须把它们按 位取反,才是该负数的二进制值。 [5]反= 1 111 1010B

  8. 3. 补码 正数的补码与其原码相同。 负数的补码是其反码+1,即相应正数按位求反后在末位加1。 [5]原= 1000 0101B [5]反= 1111 1010B [5]补= 1111 1011B 已知原码求补码是取反加一,已知补码求原码依然是取反加一(符号位不变) 0取反加1试试

  9. 补码的特点: (1) [+0]补=[–0]补=00000000,无+0和–0之分。 (2) 正因为补码中没有+0和–0之分,所以8位二进制补码所能表示的数值范围为+127~–128;同理可知,n位二进制补码表示的范围为+2n-1–1~–2n-1。在原码、反码和补码三者中,只有补码可以表示–2n-1。 补码中1000 0000 代表-128 (3) 一个用补码表示的二进制数,当为正数时,最高位(符号位)为“0”,其余位即为此数的二进制值;当为负数时,最高位(符号位)为“1”,其余位不是此数的二进制 值,必须把它们按位取反,且在最低位加1,才是它的二进制值。

  10. 原码:最高位为符号位,“0”表示正,“1”表示负,其余位表示数值的大小。 反码:正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外。 补码:正数的补码与其原码相同;负数的补码是在其反码的末位加1,符号位除外。

  11. 为什么要设立补码呢? 第一是为了能让计算机执行减法: [a-b]补=a补+(-b)补 第二个原因是为了统一正0和负00原码是00000000 -0原码是10000000 这两个数其实都是0,但他们的原码却有不同的表示。 0反码是00000000 -0反码是11111111 0补码是00000000 -0补码是00000000 特别注意补码中1000 0000 代表-128 假设机器能处理的位数为8.即字长为1byte,原码能表示数值的范围为 (-127~-0 +0~127)共256个. 在补码中用(-128)代替了(-0),所以补码的表示范围为: (-128~0~127)共256个.

  12. 补码的加法规则: [x + y]补= [x]补+ [y]补 补码的减法规则: [x-y]补= [x]补+ [-y]补

  13. [99]补 01100011 + 11000110 [ 58]补 [41]补 1 00101001 自动丢失 例. 计算y = 99  58 (用8位二进制表示) 99  58 = 99 + ( 58)=41 [y]补= [99  58]补= [99]补+ [ 58]补 [99]补= 0110 0011B [ 58]补= 1100 0110B y = [y]补= 0010 1001B = 41

  14. 十进制 二进制 [25]补= 0001 1001B 25 0001 1001 [ 32]补=1110 0000B – 32 1110 0000 + [ 7]补=1111 1001B – 7 1111 1001 [ 25]补= 1110 0111B 1110 0111 – 25 1110 0000 + [ 32]补=1110 0000B – 32 1 1100 0111 [57]补=1100 0111B – 57 自动丢失 例. 机器字长为8位。

  15. 4. 溢出的概念 8位二进制补码表示数的范围:128 ~ +127 n位二进制补码表示数的范围:2n1 ~ +(2n1 1) 若运算结果超过了字长一定的机器所能表示数的范围,称为溢出。此时运算结果出错。

  16. CS+1 CS 00 00001111 +15 + 01110000 +112 +127 01111111 例1. 令CS为数值部分向符号位的进位,CS+1为符号位向高位的进位,此例中, CS=CS+1=0,结果在8位二进制补码表示范围内,没有溢出。

  17. CS+1 CS 01 +126 01111110 +5 + 00000101 125 10000011 例2. 此例中,Cs≠CS+1,产生了错误的结果,发生了溢出。

  18. +127 01111111 例3. +5 + 00000101 124 10000100 结果出错。 CS=1, CS+1=0, 结果溢出!

  19. 因为CS = CS+1, 则结果正确。 CS CS+1, 则结果溢出。 所以溢出= CS CS+1 10000100 124 例4. 5 + 11111011 1 01111111 +127 结果出错。 CS=0, CS+1=1, 结果溢出!

  20. 综上所述,对计算机而言,补码的引入使带符号数的运算都按加法处理。如果CS和Cs+1的值相等,则表示运算结果正确,没有溢出,运算结果的正与负由符号位决定;如果CS和Cs+1的值不等,则表示运算结果不正确,发生了溢出现象。在计算机中,常用“异或”电路来判别有无溢出发生,即CSCs+1=1表示有溢出发生,否则无溢出发生。

  21. 1、Tg16 14. 在整数的补码表示法中,以下说法正确的是( AC )。 A.只有负整数的编码最高位为1 B.在编码的位数确定后,所能表示的最小整数和最大整数的绝对值相同 C.整数0只有一个唯一的编码 D.两个用补码表示的数相加时,若在最高位产生进位,则表示运算溢出 2、[x]补码=10011000,其原码为(B ) A.011001111 B.11101000 C.11100110 D.01100101 提示:已知原码求补码是取反加一,已知补码求原码依然是取反加一(符号位不变) 3、下列关于十进制数100的正确说法是( ABD )。 原码为01100100B B.反码为64H C.反码为9BH D.补码为64H 4、关于“0”的原码、反码和补码描述正确的是(C) A.“0”的原码只有一种表示方法 B.“0”的反码只有一种表示方法 C.“0”的补码只有一种表示方法 D.“0”的原码、反码和补码均有两种表示方法

  22. 数的存储

  23. 一、数的定点和浮点表示 计算机在处理数据时,要考虑到小数点的位置。如果将小数点固定在某一位置,则称为定点表示;如果小数点可以任意移动,则称为浮点表示。 1.数的定点表示法——定点小数和定点整数 ⑴定点小数格式:小数点的位置固定在最高数据位的左边,小数点前面再设一位符号位。 任何m位二进制小数在计算机中用m+1位二进制表示。 0.1011 由于小数点总是在符号位与最高数据位之间,因此在计算机中不明确表示出来

  24. ⑵定点整数格式:小数点位置固定在最低数据位的右边。⑵定点整数格式:小数点位置固定在最低数据位的右边。 整数又分为带符号和不带符号的两类。 带符号的整数,符号位安排在最高(最左)位。 由于小数点固定在最低数据右边,因此在计算机中不明确表示出来。n位带符号整数N=NsNn-1…Nn-2N1N0在计算机中用n+1位二进制表示。 对于不带符号的整数,把所有n+1位二进制位全部视为数值。 在不同计算机中,使用多种位数的整数。16位,32位,64位,64位二进制来表示一个整数。 1101

  25. 2.数的浮点表示法 浮点数是指小数点数据中的位置可以左右移动的数。一个数N要用浮点数表示可以写:N=M*RE M:浮点数的尾数。E:浮点数的指数或阶码。 R:浮点数的基数,是常数一般取2、8或16 一旦机器的浮点部件设计好了,基数的大小也就确定了,不能再改变了,基数在浮点数表示中不出现,是隐含的。 ⑴浮点数的表示方法: M:尾数。用定点小数表示,表示浮点数的有效位,其位数 n的大小决定了浮点数的精度。 E:阶码。用定点整数表示。阶码用于表示小数点在浮点数中的位置。其位数m的大小反映此浮点数所能表示的数的范围。 1101.11=0.110111*24

  26. 数字与字符的编码 一、数字的编码(BCD码) BCD码是一种常用的数字编码。 BCD码:Binary-Coded Decimal,即二进制编码的十进制数。用[… ]BCD表示。 这种编码法分别将每位十进制数字编成4位 二进制代码,从而用二进制数来表示十进制数。

  27. BCD码与二进制之间通常要经过十进制实现相互转换。 例 [0100 1001 0001.0101 1000]BCD = 491.58 0100 0011B = 67D = [0110 0111]BCD

  28. 1. BCD码-十进制数的二进制编码

  29. 十进制数 格雷码 十进制数 格雷码 0 0000 8 1100 1 0001 9 1101 2 0011 10 1111 3 0010 11 1110 4 0110 12 1010 5 0111 13 1011 6 0101 14 1001 7 0100 15 1000 2. 格雷码(Gray Code) 四位格雷码的编码表

  30. 格雷码的特点 (1)任意两个相邻数所对应的格雷码之间只有一位不同,其余位都相同。 (2)为镜像码。n位格雷码的前、后2n-1位码字除首位不同(前2n-1位码字首位为0,后2n-1位码字首位为1),后面各位互为镜像。 2位格雷码 00 01 00011110 1位格雷码 01 11 10

  31. 3位格雷码 00011110 0000 000001011010110111101100 2位格雷码 00011110 1111 10110100

  32. 奇偶校验 计算机中数据在进行存储和传输过程中可能会发生错误。为了及时发现和纠正这类错误,在数据传输(存储)过程中要进行校验,常用的校验方法就是奇偶校验。 奇偶校验能发现一位或奇数位错误,且不能纠正错误。一般以字节(八位二进制)为单位加1位奇偶校验位。奇偶校验分奇校验和偶校验两种。 一、奇校验:一个字节前面加一位校验位使得“1”的个数保持为奇数,若八位二进制数中“1”的个数为偶数,则校验位为“1”;若八位二进制数中“1”的个数为奇数,则校验位为“0”。 【例1】给10011001 01101101加奇校验结果为110011001 001101101 二、偶校验:一个字节前面加一位校验位使得“1”的个数保持为偶数,若八位二进制数中“1”的个数为偶数,则校验位为“0”;若八位二进制数中“1”的个数为奇数,则校验位为“1”。 【例2】给10011001 01101101加偶校验结果为010011001 101101101

  33. 3. program S403; var a1:array[1..50] of integer; i,j,t,t2,n,n2:integer; begin n:=50; for i:=1 to n do a1[i]:=0; n2:=round(sqrt(n)); for i:=2 to n2 do if(a1[i]=0) then begin t2:=n div i; for j:=2 to t2 do a1[i*j]:=1; end; t:=0; for i:=2 to n do if (a1[i]=0) then begin write(i:4); inc(t); if(t mod 10=0) then writeln; end; writeln; end. 输出:

  34. 129,43

More Related