循环码(9,3)码

循环码(9,3)码
循环码(9,3)码

循环码(9,3)码课程设计

一、摘要:

本报告详细给出了循环码的定义以及由生成多项式求解生成矩阵和系统生成矩阵的过程,并在Matlab 环境下写出了循环码的编码器和解码器代码,实现了编码和译码功能。分析和讨论了此码发现错误、纠正错误的能力,并讨论了其与线性分组码、Hamming 码等信道编码的区别与联系。

二、关键字:

循环码 编码 译码 检错 纠错 Matlab

三、基本概念:

更好的设计和实现线性分组码的方法是引入特定的数学结构来界定某一类线性分组码。循环码即是采用循环移位特性界定的一类线性分组码。

循环码定义:设C 使某(n,k)线性分组码的码字集合,如果对任何

C c c c C n n ∈=--),,,(021 ,它的循环移位),,,(1032)1(---=n n n c c c c C 也属于C ,则称该(n,k )码为循环码。

该码在结构上有另外的限制,即一个码字任意循环移位的结果仍是一个有效码字。其特点是:(1)可以用反馈移位寄存器很容易实现编码和伴随式的计算;(2)由于循环码有很多固有的代数结构,从而可以找到各种简单使用的译码办法。

如果一个(n,k )线性码具有以下的属性,则称为循环码:如果n 元组},,,{110-=n c c c c 是子空间S 的一个码字,则经过循环移位得到的

},,,{201)1(--=n n c c c c 也同样是S 中的一个码字;或者,一般来说,经过j 次循环移位后得到的},,,,,,,{11011)(---+--=j n n j n j n j c c c c c c c 也是S 中的一个码字。

循环码的多项式描述:

码字的多项式描述,一个n 元码字可以用一个次数不超过n-1的多项式唯一表示

)(0121c c c c c n n --=

0112211)(c x c x c x c x c n n n n ++++=----

其中,我们不关心x 的具体位置,其次数只表示相应码元的位置。称这样的c(x)为c 的码字多项式。

生成多项式g(x)及生成矩阵G :

如果一种码的所有码多项式都是多项式g(x)的倍式,则称g(x)为该码的生成多项式。在循环码中,次数最低的多项式(0除外)就是生成多项式g(x),其他码多项式都是其倍数。且该g(x)的阶数为r=n-k ,常

数项为1,是n x +1的一个因式。为了寻求生成多项式,必须对n

x +1进

行因式分解。

循环码的生成矩阵多项式为:

?????

??

?????????=--)()()()()(21X g X Xg X g X X g X X G k k

然后将系数提出就得到生成矩阵G 。

系统循环码:

循环码也可以构成为系统循环码。为方便系统码的构造,将消息多项式和码式都记为高位在前,即),,,,(0121m m m m m k k ???=--的消息多项式

为m(x),

1110)(--+++=k k x m x m m x m

又设码式的高幂次部分等于m(x),即

)

()()(1

11110x p x m x x c x c x c x c c x c k n n n k n k n k n k n +?=++++++=---+-+--- k n r x p -=

其中p(x)称为校验位多项式,由于码式是生成式的倍式,所以

))

((mod 0)()()()(x g x g x a x m x x p k

n ==+-

))()(mod ()(x g x m x x p r ?-=

因此循环码的系统码码式为

))]((mod )([)()(x g x m x x m x x c r r -=

将循环码的系统码构造步骤总结为

多项式乘

))(()(x m x x m x r r =

多项式求模(余式)

)())())(mod ((x p x g x m x r = 多项式减

)()())((x c x p x m x r

=- 如果令)(x m 为单项式1+r x ,1,,1,0-=k i

r x p x p x g x a x i i r

i

r i i x x p x c ++=)()(

那么容易看到,

)(x c i 对应的向量i c ,1,,1,0-=k i 是线性无关的,

从而得到循环码系统码的生成矩阵s G 为

?

?

???

??

?????=------1000100011

,11

,10,11

,111101,00100

r k k k r r s p p p p p p p p p G

循环码的编码:

利用生成多项式g(x)实现编码:

如上所述,但循环码的生成多项式g(x)确定时,码就完全确定了。现在讨论生成多项式g(x)给定以后,如何实现循环码的编码问题。

若已知 g(x)=gn-kxn-k+gn-k-1xn-k-1+...g1x+g0 并设信息元多项式 m(x)=mk-1xk-1+mk-2xk-2+...m1x+m0

要编码成系统循环码形式,即码字的最左边k 位是信息元,其余n-k 位是校验元,则要用xn-k 乘以m(x),再加上校验元多项式r(x),这样得到的码字多项式c(x)为

c(x)=xn-km(x)+r(x)

=mk-1xn-1+mk-2xn-2+...m0xn-k+rn-k-1xn-k-1+...r1x+r0

其中 r(x)=rn-k-1xn-k-1+...r1x+r0 c(x)一定是g(x)的倍式,即有

c(x)=xn-km(x)+r(x)=q(x)g(x) c(x)=xn-km(x)+r(x)=0. mod g(x)

注意到g(x)为n-k 次多项式,而r(x)最多为n-k-1次多项式,必有 r(x)=xm(x), mod g(x) (1) 即r(x)必是xn-km(x)除以g(x)的余式。

式(1)指出了系统循环码的编码方法:首先将信息元多项式m(x)乘以xn-k 成为xn-km(x),然后将xn-km(x)除以生成多项式)(x g 得到余式r(x),该余式就是校验元多项式,从而得到码字多项式

)()()(x r x km xn x c +-=。

综上所述,系统循环码的编码问题,可以归结为两个多项式的除法运算,即将xn-km(x)除以生成多项式g(x)得到余式r(x)的运算,因此研究多项式除法的电路实现是必要的。

检错纠错能力:

若纠错码的最小距离为min d ,那么如下三个结论的任何一个结论独立成立。

(1)可以检测出任意小于等于1dim -=d l 个差错; (2)可以纠正任意小于等于)]1(2/1[min -=d t 个差错;

(3)可以检测出任意小于等于l 同时纠正小于等于t 个差错,其中l 和t 满足:11min -≤+d t 和1

编码器·译码器 原理图: 编码器原理图:

译码器原理图:

输入R

已知生成矩阵G 如下,列出S 与E 的对照表。当收到码组

[]001011001=B 时,解出对应的信息码组D

??

??

?

?????=100100100010010010001001001G

??

?

?

??

???

?

?????

?????=100000100010000010001000001000100100000010010000001001H ???

?

??

???

?

???

??????????????

?=100000010000001000000100000010

000001100100010010001001T H

S 有6

2种形式,相应的码重最小的E 矢量有6

2种。S 与E 的对照表如下:

[][]000010100000010000001000000100000010

000001

100000010010001001001011001=???

?

??

??

?

?

???

???????????????==T BH S

查表可知,E 矢量为:[]000010000=E

所以正确的码组A 为:[]001001001=⊕=-=E B E B A 所以信息码组为:[]001001=S

由生成多项式求解生成矩阵的过程:

已知:(9,3)循环码的生成多项式为

1)(3

6++=x x x G ,求生成矩阵及系统码生成矩阵。

解:由生成多项式可得生成矩阵为

??

??

??????=100100100010010010001001001G 则系统码生成矩阵为

??

???

?????=100100100010010010001001001s G

发现错误能力及纠正错误能力。

由生成矩阵得纠错码的最小距离3min =d ,则: (1)可以检测出任意小于等于l=2个差错; (2)可以纠正任意小于等于t=1个差错;

(3)可以检测出任意小于等于2同时纠正小于等于1个差错。

循环码和线性分组码、Hamming 码的区别、联系:

线性分组码:

是同时具有分组特性(码子和消息长度恒定)和线性特性(消息相加后的编码等于各自编码后相加)的纠错码。每个监督码元都是码组中某些信息码元的线性相加得到的。将q 元符号按每k 个分为一组.然后通过编码得到n-k 个q 元符号作为冗余校验符号,最后由校验符号和信息符号组成有n 个q 元符号的码字符号。得到的码字可以纠正t 个错误,编码码率为为k/n 。两个属于该码的码字的和仍是一个属于该码的码字,全零字总是一个码字,一个线性码的两个码字之间的最小距离等于任何非零码字的最小汉明重量。

循环码:

是采用循环移位特性界定的一类线性分组码。是线性分组码的一个重要子类;BCH 码是其主要的一大类;汉明码、R-M 码、Golay 码、RS 码等可变换;纳入循环码内,Goppa 码的一个子类也属于循环码;用反馈线性移位寄存器可以容易的实现其编码和得到伴随式;由于数学上的特性,译码方法简单。

设C 使某(n,k)线性分组码的码字集合,如果对任何

C c c c C n n ∈=--),,,(021 ,它的循环移位),,,,(1032)1(---=n n n c c c c C 也属于C 。该码在结构上有另外的限制,即一个码字任意循环移位的结果仍是一个有效码字。

Hamming 码:

汉明码是一种能纠正一位错码的线性分组码且是一类

高效率的纠错码。当m=3时,n=7,k=4。线性分组码中的(7,4)码就是汉明码。汉明码的译码电路利用最小码重错误图样进行译码的电路实现;利用校正子与错码位置的对应关系,也可以使用地址译码器来帮助实现译码。

循环码的MATLAB 仿真

编码器和译码器的MATLAB 编写

1、编码器Matlab编写

m=input('输入m矩阵')

G=[1 0 0 1 0 0 1 0 0;0 1 0 0 1 0 0 1 0;0 0 1 0 0 1 0 0 1] c=m*G

mod(c,2)

c1=[0 0 0]*G

a1=mod(c1,2)

c2=[0 0 1]*G

a2=mod(c2,2)

c3=[0 1 0]*G

a3=mod(c3,2)

c4=[0 1 1]*G

a4=mod(c4,2)

c5=[1 0 0]*G

a5=mod(c5,2)

c6=[1 0 1]*G

a6=mod(c6,2)

c7=[1 1 0]*G

a7=mod(c7,2)

c8=[1 1 1]*G

a8=mod(c8,2)

M=[a1;a2;a3;a4;a5;a6;a7;a8]

2、译码器的Matlab编写

R=input('请输入R矩阵')

b1=mod(R+a1,2)

k1=find(b1==1)

y1=length(k1)

b2=mod(R+a2,2)

k2=find(b2==1)

y2=length(k2)

b3=mod(R+a3,2)

k3=find(b3==1)

y3=length(k3)

b4=mod(R+a4,2)

k4=find(b4==1)

y4=length(k4)

b5=mod(R+a5,2)

k5=find(b5==1)

y5=length(k5)

b6=mod(R+a6,2)

k6=find(b6==1)

y6=length(k6)

b7=mod(R+a7,2)

k7=find(b7==1)

y7=length(k7)

b8=mod(R+a8,2)

k8=find(b8==1)

y8=length(k8)

L=[y1 y2 y3 y4 y5 y6 y7 y8]

[g,n]=min(L)

X=M(n,:)

m1=X(:,1:3)

运行结果:

输入m矩阵[ 1 0 1 ]

m =

1 0 1

ans =

Columns 1 through 7

1 0 1 1 0 1 1

Columns 8 through 9

0 1

M =

Columns 1 through 7

0 0 0 0 0 0 0

0 0 1 0 0 1 0

0 1 0 0 1 0 0

0 1 1 0 1 1 0

1 0 0 1 0 0 1

1 0 1 1 0 1 1

1 1 0 1 1 0 1

1 1 1 1 1 1 1

Columns 8 through 9

0 0

0 1

1 0

1 1

0 0

0 1

1 0

1 1

请输入R矩阵[ 0 0 1 0 0 1 0 0 1 ]

R =

Columns 1 through 7

0 0 1 0 0 1 0

Columns 8 through 9

0 1

L =

Columns 1 through 7

3 0 6 3 6 3 9

Column 8

6

g =

n =

2

X =

Columns 1 through 7

0 0 1 0 0 1 0

Columns 8 through 9

0 1

m1 =

0 0 1

参考文献:

陈运主编《信息论与编码》(第2版)——电子工业出版社参与人员:

吕远李东廖东杨剑李泉源

输煤系统调试方案

1 概述 1.1系统简介 华电新疆发电有限公司昌吉热电厂2×330MW热电联产工程1号锅炉由上海锅炉厂有限公司设计制造。型号为SG-1180/17.5-M4004,锅炉为亚临界、自然循环汽包炉,单炉膛、一次中间再热、燃烧器摆动调温、平衡通风、四角切向燃烧、紧身密闭、固态排渣、全钢架悬吊结构。设计采用0号轻柴油点火,燃用烟煤。锅炉以最大连续负荷(即BMCR工况)为设计参数。锅炉主要参数见表1。 本期工程燃煤主要由神华公司屯宝煤矿、哈密煤业硫磺沟矿及本地煤矿供给,采用公路运输进厂。 工程建设单位为华电新疆发电有限公司昌吉热电厂,由西北电力建设工程监理有限责任公司昌吉热电厂工程监理部负责监理,新疆电力设计院负责设计,华源电力安装公司负责安装,新疆电力科学研究院负责启动调试。 表1 锅炉主要参数 1.2电厂内输煤系统 带式输送机从卸煤设施到锅炉房原煤斗的运煤胶带机规格为:带宽B=1000mm,带速V=2.0m/s,额定出力Q=600t/h。 1.3储煤场、煤场设施 本期工程设一座斗轮堆取料机煤场作为汽车来煤场。设置一台堆料能

力600 t/h,取料能力600 t/h的斗轮堆取料机,用于将缝隙式汽车卸煤沟来煤或场外皮带来煤堆至煤场及将煤场贮煤取入系统。配带宽B=1000mm 的单路煤场带式输送机。 1.4 输煤设备 输煤系统采用带式输送机,带式输送机系统从C3、C1A/B皮带机开始,到主厂房煤仓间结束。共扩建6路11条输送皮带机以及一台斗轮堆取料机。输煤系统带式输送机设有以下保护信号:双向拉绳开关、堵煤检测装置、料流检测器、两级跑偏开关和速度检测装置。在输煤集控操作台上设置两个可使系统急停的硬接点旋钮,可在任何时间停止输煤设备运行。煤仓层C6A/B皮带机采用电动双侧犁式卸料器向各原煤斗配煤。煤仓层及各转运站的除尘、清扫方式采用喷雾和机械除尘及水力冲洗清扫相结合的清扫方式。 1.5运煤系统辅助设施 1.5.1除铁设施 本工程运煤系统中设有三级除铁方式。第一级设在C1A/B带头部和煤场C3带前部为带式除铁器;第二级设在进入碎煤机室的C4A/B胶带机头部为带式除铁器;第三级设在出碎煤机室后C5A/B胶带机中部,采用电磁盘式除铁器,自动交替运行工作方式;除铁器型号均与系统输送机带宽匹配。 1.5.2原煤取样设施 本工程在C5A/B带中部各设置了入炉煤取样装置,在重车衡之前设置了入厂煤样装置,对煤质进行分析化验,以确保入炉、入厂煤的煤质和燃煤的经济性。 1.5.3本工程筛煤机采用9轴滚轴筛煤机,额定出力为600 t/h。碎煤机采用HCSC4型环锤式碎煤机,额定出力为400 t/h。以及叶轮给煤机、犁式卸煤器等。 2 调试目的 通过各带式输送机试转以及其他输煤设备的调试,对施工、设计和

约翰逊计数器

环形计数器是由移位寄存器加上一定的反馈电路构成的,用移位寄存器构成环形计数器的一般框图见图23-5-1,它是由一个移位寄存器和一个组合反馈逻辑电路闭环构成,反馈电路的输出接向移位寄存器的串行输入端,反馈电路的输入端根据移位寄存器计数器类型的不同,可接向移位寄存器的串行输出端或某些触发器的输出端。 图23-5-1 移位寄存器型计数器方框图 23.5.1 环形计数器 23.5.1.1 电路工作原理 图23-5-2为一个四位环形计数器,它是把移位寄存器最低一位的串行输出端Q1反馈到最高位的串行输入端(即D触发器的数据端)而构成的,环形计数器常用来实现脉冲顺序分配的功能(分配器)。 假设寄存器初始状态为[Q4Q3Q2Q1]=1000,那么在移位脉冲的作用下,其状态将按表23-11 中的顺序转换。 当第三个移位脉冲到来后,Q1=1,它反馈到D4输入端,在第四个移位脉冲作用下Q4=1,回复到初始状态。表23-11中的各状态将在移位脉冲作用下,反复在四位移位寄存器中不断循环。

由上述讲讨论可知,该环形计数的计数长度为N=n。和二进制计数器相比,它有2n-n个状态没有利用,它利用的有效状态是少的。 23.5.1.2 状态转换图和工作时序 表23-11中是以1000为初始状态的,它所对应的状态转换图见图23-5-3。如果移位寄存器中的初始状态不同,就会有不同的状态转换图。图23-5-4给出了四位环形计数器可能有的其它几种状态转换图。 图23-5-3 状态转换图 (a) (b) (c) (d) 图23-5-4 四位环行计数器其它的状态转换图 图23-5-4(a)、(b)、(c)三个状态转换图中各状态是闭合的,相应的时序为循环时序。当计数器处于图23-5-4(d)所示的状态0000或1111时,计数器的状态将不发生变化。这两个状态称为悬态或死态。 四位环形计数器可能有这么多不同的循环时序,是我们不希望的,只能从这些循环时序中选出一个来工作,这就是工作时序,或称为正常时序,或有效时序。其它末被选中的循环时序称为异常时序或无效时序。一般选图23-5-3的时序为工作时序,因为它只循环一个“1”,不用经过译码就可从各触发器的Q端得到顺序脉冲输出,参看图23-5-5。

基于MATLAB的循环码实验报告

课程名称:信息论与编码 课程设计题目:循环码的编码和译码程序设计指导教师: 系别:专业: 学号:姓名: 合作者 完成时间: 成绩:评阅人:

一、实验目的: 1、通过实验了解循环码的工作原理。 2、深刻理解RS 码构造、RS 编译码等相关概念和算法。 二、实验原理 1、RS 循环码编译码原理与特点 设C 使某 线性分组码的码字集合,如果对任C c c c C n n ∈=--),,,(021 ,它的循环 移位),,,(1032)1(---=n n n c c c c C 也属于C ,则称该 码为循环码。 该码在结构上有另外的限制,即一个码字任意循环移位的结果仍是一个有效码字。其特点是:(1)可以用反馈移位寄存器很容易实现编码和伴随式的计算;(2)由于循环码有很多固有的代数结构,从而可以找到各种简单使用的译码办法。 如果一个 线性码具有以下的属性,则称为循环码:如果n 元组 },,,{110-=n c c c c 是子空间S 的一个码字,则经过循环移位得到的},,,{201)1(--=n n c c c c 也 同样是S 中的一个码字;或者,一般来说,经过j 次循环移位后得到的 },,,,,,,{11011)(---+--=j n n j n j n j c c c c c c c 也是S 中的一个码字。 RS 码的编码系统是建立在比特组基础上的,即字节,而不是单个的0和1,因此它是非二进制BCH 码,这使得它处理突发错误的能力特别强。 码长:12-=m n 信息段:t n k 2-= (t 为纠错符号数) 监督段:k n t -=2 最小码段:12+=t d 最小距离为d 的本原RS 码的生成多项式为:g(x)=(x-α)(x -α2)(x -α3)…(x -αd -2) 信息元多项式为::m(x)=m0+m1x+m2x2+…+mk -1xk-1 循环码特点有: 1)循环码是线性分组码的一种,所以它具有线性分组的码的一般特性,且具有循环性,纠错能力强。 2)循环码是一种无权码,循环码编排的特点为相邻的两个数码之间符合卡诺中的邻接条件,即相邻数码间只有一位码元不同,因此它具有一个很好的优点是它满足邻接条件,没有瞬时错误(在数码变换过程中,在速度上会有快有慢,中间经过其他一些数码形式,即为瞬时错误)。 3)码字的循环特性,循环码中任一许用码经过牡环移位后,所得到的码组仍然是许用码组。

顺序结构选择结构和循环结构的程序设计典型例题分析与解答

顺序结构、选择结构和循环结构的程序设计典型例题分析与解答 1 在三种选择结构中,能用2个条件,控制从3个操作中选择一个操作执行的选择结构是______选择结构 【分析】能用1个条件,控制某个操作做或不做的选择结构是单分支结构;能用1个条件,控制从2个操作中选择一个操作执行的选择结构是双分支结构;能用n(n>l)个条件,控制从n+ l个操作中选择一个操作执行的选择结构是多分支结构。【答案】多分支 2 在三种循环结构中,先执行循环操作内容(即循环体),后判断控制循环条件的循环结构是______循环结构。 【分析】当型循环结构是先判断控制循环的条件,条件成立,执行循环体;条件不成立,则退出循环体。次数型循环结构也是先判断是否达到循环次数,没有达到循环次数,执行循环体;达到循环次数的,退出循环。只有直到型循环结构才是先执行循环体,然后再判断控制循环的条件,如果条件成立,进行循环;条件不成立,退出循环。 【答案】直到型 3 使用“getchar( )”函数时,程序的开头必须写一条包含命令为____________。 【分析】凡是使用系统函数的程序,都要在程序的开头写一条包含命令,包含命令中的“头函数.h”是一个文件,其中有关于该系统函数的定义。系统函数“getchar( )”是在名为“stdio.h(标准输入输出函数)”的头函数文件中定义的。【答案】#include"stdio.h"或#include<stdio.h> 4 执行输入语句“scanf("x=%c,y=%d",&x,&y);”,要使字符型变量X的值为'A'、整型变量y的值为12,则从键盘上正确的输入是( ) ①'A'/②A/③x=A/ ④x=A,y=12/ 12/ 12/ y=12/ 说明:备选答案中的"/"表示回车换行键 【分析】输入语句的格式控制符串中的“x=”、“,”、“y=”都是非格式控制符, 在输入时必须原样位置输人,所以只有备选答案④才符合这个要求。【答案】④ 5 设有下列程序段,则执行该程序段后的输出是( ) int i=012; float f=1.234E-2; printf("i=%-5df=%5.3f",i,f); ... ①i=__012f=1.234 ②i=10___f=0.012 ③10___O.012 ④___100.012 注:答案中的_代表一个空格。 【分析】输出语句的格式控制符串中的“i=”、“f=”都是非格式控制符,在输出时必须原样,原位置输出,所以只有备选答案①和②才符合这个要求;格式控制符“%-5d”的格式控制是数据左对齐、宽度为5的整型数据,备选答案①中的数据是右对齐的;此外,该答案中的实数“1.234E-2”应该代表“0.01234”,而不是“1.234”。只有备选答案②符合题意。【答案】② 6 在Turbo C的主屏幕中,将当前编辑的源程序以原名存盘,可以选用___________菜单项,也可以直热键________。 【分析】如果选用“File/Save”菜单项,或者使用热键(f12),当前编辑的源程序将以原来的文件名存盘;如果选用“File /Write to”,当前编辑的源程序将以新的文件名存盘。 【答案】File/Save F2 7 下列各种选择结构的问题中,最适合用if-else语句来解决的是( ) ①控制单个操作做或不做的问题 ②控制两个操作中选取一个操作执行的问题 ③控制三个操作中选取一个操作执行的问题 ④控制10个操作中选取一个操作执行的问题 【分析】if-else语句是专门解决“双分支结构”的,而“双分支结构”的问题就是用单个条件控制从两个操作中选取一个操作来执行的问题。 【答案】② 8 下列程序是输入一个小写字母,转换成对应大写字母的后一个字母输出。例如:'a'将转换成’B’、…、‘y’将转换成’Z’,其中的’Z’将转换成’A’。请填写程序中所缺少的语句。 main() {char ch ; scanf(”%c”,&ch〕; ch=ch- 32+1; ___________________; printf("%c\n",ch); } 【分析】分析程序库中的“ch=ch- 32+ 1;”语句,可知是将字符型变量 ch中的小写字母转换成对应的大写字母(- 32)的后一个字母(+ l)。如果ch中的字母是' a'、' b'、··,'y',转换结果都不会出错,但是,如果 ch中的字母是'Z',则-32后是大写字母'Z',再+l后将不是大写字母了。为了使其转换成'A',需要用一个单分支结构来实现:如果ch的值等于'Z'+ l,则硬性将 ch的值改成'A'。完成这个任务的语句是一条单分支语句,正是所缺少的语句。 【答案】 if (ch=='Z'+l) h='A'; 9不能正确计算下列分段函数的程序段是_________ |-1 x<0 y=|0 x=0 x>0 ① switch(x< 0)② if(x> 0) {case1:y=-1;break; y=1; case 0:switch(x==0)else {casel:y=0;break;if(x==0) case 0: y= l;y=0 } else } &ny=-l ③ y= l;④ y= l; if(x==0)if(x<0) y=0; y =-l; else else y=- l; if(x== 0) y=0; 【分析】先来分析备选答案①:表达式“x<0”的值只有两种可能性,成立值为1、不成立值为on如果“x<0”的值为 1(即 x< 0),则执行“easel:”后的语句“y=-l”后,退出 switch语句,符合分段函数要求。如果“x<0”的值为0(即x>=0),则执行“case 0:”后的switch语句。该switch语句的表达式是“x==0”,结果也有两种:成立为1、不成立为0.如果“x==0”的值为1(即x=0),则执行“case l:”后的语句“y=0”后,退出 switch语句,符合分段函数要求。如果“x==0”的值为0(即x>0),则执行“case 0:”后的语句“y=1”,也符合分段函数要求。再分析备选答案②:这是标准的用嵌套双分支结构来实现三分支的分段函数,结果显然是能求解分段函数的。分析备选答案③:双分支语句的条件是“x==0”,条件成立时,y值为0,符合分段函数的要求,条件不成立时(包含x>0和x<0两种情况),结果y值为-l,显然不符合分段函数的要求,所以本题要选该答案。至于备选答案④,是能正确计算分段函数的,首先置y为1;接着用双分支结构处理“x<0”和“x>=0”的两种情况:前者使得y值为一l;后者再执行一个单分支结构,如果“x==0”则使y值为0,否则不改变y值,保持y的原值1,符合分段函数的要求。 【答案】③ 10 三种循环语句都能解决循环次数已经确定的次数型循环,其中__________循环语句最适合。 【分析】当“for(表达式 1;表达式 2;表达式 3)语句;”中的表达式1为:整型变量 k=l;表达式 2为:整型变量 k<= n;表达式 3为:整型变量 k++;则这个 for循环就是次数为n次的标准次数型循环结构。 【答案】for 11执行下列程序段后的输出是() x=l; while(x<=3) x++,y=x+++x; printf("%d,%d",x,y); ① 6,10 ②5,8 ③4,6 ④3,4 【分析】我们可以使用逐步记录运行结果的方法来获得输出结果,记录如下: x=1; 进入循环,条件满足执行循环体:计算x+十得x为2,计算y=x+++x,得y为4、x为3; 继续循环,条件满足执行循环体:计算x+十得x为4,计算y=x+++x,得y为8、x为5; 继续循环,条件不满足退出循环; 输出x和y的值为5,8。 【答案】② 12 执行下列程序段,其中的do-while循环一共执行_次。 static int x; do x+=x*x; while (x); 【分析】对静态型变量,不赋初值也有值,对整型变量,其值为 0。执行循环语句 do-while 的循环体,x+=x* x是x=x+(x*

国家电力投资集团公司火电工程设计优化指导意见

集团公司火电工程设计优化指导意见 为在火电厂设计中引入核文化理念,进一步提高集团公司火电工程设计水平,全面提升火电厂全生命周期效益最大化,有效落实“安全可靠、成熟先进、造价合理、节能环保”的原则,集团公司结合当前国家火电产业政策及火电装备技术情况,对火电工程设计优化提出如下指导意见。 一、优化选择机组参数,确保具有竞争优势 (一)纯凝发电机组应选择66万千瓦和100万千瓦超超临界机组。当采用W火焰锅炉时,可选择超临界机组。 煤源稳定地区超超临界机组主机参数选择28MPa/600℃/620℃,其它地区选择28MPa/600℃/610℃,新疆等低煤价地区当采用66万千瓦机组,可选择25MPa/600℃/600℃。 煤源稳定的高煤价地区,经集团公司同意可采用超超临界二次再热系统,主机参数选择31MPa/600℃/620℃/620℃。 (二)热电联产机组应选择背压机组或35万千瓦超临界抽凝机组。选择背压热电联产机组,应结合单机容量优先采用高温高压及以上参数。 常住人口50万以下城市,采暖型供热机组宜选择背压机组;常住人口50万以上城市,优先选择背压机组,也可选择2×35万千瓦抽凝机组。当选择2×35万千瓦抽凝机组,

采暖期热电比应不低于80%。 二、准确提供煤质资料基础数据 (三)火电厂设计煤种和校核煤种的煤质资料须经二级单位确认后,才能作为主、辅机招标和工程设计的依据。设计煤种和校核煤种的煤质数据及常规化验分析项目应符合集团公司《火电工程设计控制标准》中的规定。 (四)设计煤种应为机组投运后主要燃用煤种,校核煤种应起到对锅炉及其辅机设备具有校核的作用,与设计煤种应有一定差异,但偏差值不应超过附表1的规定。 设计煤种和校核煤种采用多煤种时,煤样来源不宜超过3个矿区。进行混合煤样常规分析时,应对单煤样和混合煤样分别进行化验分析,然后按规定的各单煤样收到基混合比加权计算工业分析、发热量、元素分析各项成分及参数以核对混合煤样的准确性。 三、合理选择高效低耗、成熟先进设备 (五)应根据厂址所在地区水资源状况合理选择湿冷机组或空冷机组。空冷机组优先选择表面式凝汽器间接空冷机组,严寒地区防冻不能满足要求时可选择直接空冷机组。 深入开展宽负荷和深度调峰机组研究,供热电厂应进行设臵储热设施作为调峰手段的研究。 (六)锅炉BMCR(锅炉最大连续出力)工况的蒸发量应与汽轮机VWO(阀门全开)工况的主蒸汽流量一致。对66万千瓦和100万千瓦机组,汽轮机VWO工况的主蒸汽流量宜为

六位计数器

六位计数器 六位计数器 本文介绍一种使用单片机制作的双向多功能6位计数器,其面板框图如图1所示。该计数器电路原理如图2所示。它极大地方便了需要交替或者同时使用加数功能和减数功能的场合,例如:在某些生产线上,一方面进行合格品的自动累加计数,另一方面又要扣除从检验岗位返回的不合格品的数字,完成这种功能,通常需要使用两只计数器,还要经过计算才可以得到结果;现在只需要使用本文介绍的计数器就能够同时完成加数和减数的工作,而且即时得到结果的数字。现将该计数器介绍如下。 1.计数信号输入 具有两个计数信号输入端口,可以同时或者分别输人加数信号与减数信号。当输人其中一种信号时,另一个信号输入端无需任何设置,就让它悬空即可。 两个输人端口使用了内部带“斯密特”特性的端口,如果两个端口同时输人信号的话,程序会自动判断,判断原理如下:11=无输人;10=减数输人;01=加数输人;00=同时输人。 由于输人端口本身具有“斯密特”性能对计数信号的输人无疑具有较好的抗干扰能力。只要输人基本的0~3.5 V直流脉冲或者电平信号,电路都可以正常响应。 提示:

输人信号可以使用红外线、光敏、机械开关和其它电子开关产生的开关脉冲,严禁脉冲最大电压超过DCSV。 最方便的是,无需使用有源的输人脉冲,只需要把输人端口对地线短接一次,就可以输人一个计数信号,因为本电路已经配置好输人端口为高电平状态。图2中单片机SP和6P的两个端口分别接与+5V 端相连的两只4.7k iZ电阻的另一端。 程序智能处理两个端口来的输人信号: 11和00均为不处理,00虽然是两个端口同时输人,但是因为它们是相反性质,因此,互相抵消,屏幕数字保持不变。 01:需要把显示值增加一个字,> 999999或者=用户设置的超限值,则加数控制输出会出现高电平。 10:需要把显示值减少一个字,到达000000时,减数控制输出会出现高电平。 2.控制输出: 具有两个很灵活应用的控制输出端口,其应用组合功能远远高于普通控制输出端口。 如果屏幕显示为000000,则OUTL输出高电平,这就是减计数的最终控制输出信号;如果屏幕显示为用户设置值,则OUTH输出高电平,这就是加计数的最终输出控制信号。 如果屏幕既不是000000,也不是用户的设置值,就都输出L电平。 3.操作按键

crc校验码 详细介绍看懂了就会了

循环冗余校验码(CRC)的基本原理是:在K位信息码后再拼接R位的校验码,整个编码长度为N位,因此,这种编码又叫(N,K)码。对于一个给定的(N,K)码,可以证明存在一个最高次幂为N-K=R的多项式G(x)。根据G(x)可以生成K位信息的校验码,而G(x)叫做这个CRC码的生成多项式。校验码的具体生成过程为:假设发送信息用信息多项式C(X)表示,将C(x)左移R位,则可表示成C(x)*2的R次方,这样C(x)的右边就会空出R位,这就是校验码的位置。通过C(x)*2的R次方除以生成多项式G(x)得到的余数就是校验码。 编辑本段 几个基本概念 1、多项式与二进制数码 多项式和二进制数有直接对应关系:x的最高幂次对应二进制数的最高位,以下各位对应多项式的各幂次,有此幂次项对应1,无此幂次项对应0。可以看出:x的最高幂次为R,转换成对应的二进制数有R+1位。 多项式包括生成多项式G(x)和信息多项式C(x)。 如生成多项式为G(x)=x^4+x^3+x+1,可转换为二进制数码11011。 而发送信息位1111,可转换为数据多项式为C(x)=x^3+x^2+x+1。 2、生成多项式 是接受方和发送方的一个约定,也就是一个二进制数,在整个传输过程中,这个数始终保持不变。 在发送方,利用生成多项式对信息多项式做模2除生成校验码。在接受方利用生成多项式对收到的编码多项式做模2除检测和确定错误位置。 应满足以下条件: a、生成多项式的最高位和最低位必须为1。 b、当被传送信息(CRC码)任何一位发生错误时,被生成多项式做除后应该使余数不为0。 c、不同位发生错误时,应该使余数不同。 d、对余数继续做除,应使余数循环。 3 CRC码的生成步骤 1、将x的最高次幂为R的生成多项式G(x)转换成对应的R+1位二进制数。 2、将信息码左移R位,相当与对应的信息多项式C(x)*2的R次方。 3、用生成多项式(二进制数)对信息码做除,得到R位的余数。 4、将余数拼到信息码左移后空出的位置,得到完整的CRC码。 【例】假设使用的生成多项式是G(x)=x^3+x+1。4位的原始报文为1010,求编码后的报文。 解: 1、将生成多项式G(x)=x^3+x+1转换成对应的二进制除数1011。 2、此题生成多项式有4位(R+1),要把原始报文C(x)左移3(R)位变成1010000 3、用生成多项式对应的二进制数对左移3位后的原始报文进行模2除,相当于按位异或: 1010000

基于的循环码的编译仿真

Equation Chapter 1 Section 1 Harbin Institute of Technology 信息论与编码实验报告基于MATLAB的(7,4)循环码的编译仿真 院系:电子与信息工程学院 姓名:周才发 学号:13S005051 班级:通信二班 哈尔滨工业大学

基于MATLAB的(7,4)循环码的编译仿真 (电子与信息工程学院13S005051 周才发序号:15) 1、循环码简介 随着社会经济的迅速发展和科学技术的全面进步,计算机事业的飞速发展,以计算机与通信技术为基础的信息系统正处于蓬勃发展的时期。随着经济文化水平的显着提高,人们对生活质量及工作软件的要求也越来越高。在计算机通信信息码中循环码是线性分组码的一个重要子集,是目前研究得最成熟的一类码。它有许多特殊的代数性质,它使计算机通信以一种以数据通信形式出现,实现了在计算机与计算机之间或计算机与终端设备之间进行有效的与正确地信息传递,它使得现代通信的可靠性与有效性实现了质的飞跃。它是现代计算机技术与通信技术飞速发展的产物,在日常生活通信领域、武器控制系统等领域都被广泛应用。 纠错码(error correcting code),在传输过程中发生错误后能在收端自行发现或纠正的码。仅用来发现错误的码一般常称为检错码。为使一种码具有检错或纠错能力,须对原码字增加多余的码元,以扩大码字之间的差别,即把原码字按某种规则变成有一定剩余度(见信源编码)的码字,并使每个码字的码之间有一定的关系。关系的建立称为编码。码字到达收端后,可以根据编码规则是否满足以判定有无错误。当不能满足时,按一定规则确定错误所在位置并予以纠正。纠错并恢复原码字的过程称为译码。检错码与其他手段结合使用,可以纠错。 纠错编码又称信道编码,它与信源编码是信息传输的两个方面。它们之间存在对偶的关系。应用信道译码直接对一些自然信息进行处理,可以去掉剩余度,以达到压缩数据的目的。为了使一种码具有检错或纠错能力,必须对原码字增加多余的码元,以扩大码字之间的差别,使一个码字在一定数目内的码元上发生错误时,不致错成另一个码字。准确地说,即把原码字按某种规则变成有一定剩余度的码字,并使每个码字的码元间有一定的关系。关系的建立称为编码。码字到达收端后,用编码时所用的规则去检验。如果没有错误,则原规则一定满足,否则就不满足。由此可以根据编码规则是否满足以判定有无错误。当不能满足时,在可纠能力之内按一定的规则确定错误所在的位置,并予以纠正。纠错并恢复原码字的过程称为译码;码元间的关系为线性时,称为线性码;否则称为非线性码。检错码与其他手段结合使用,可以纠错。检错反馈重发系统(ARQ系统)就是一例。 循环码是线性分组码的一种,所以它具有线性分组码的一般特性,此外还具 有循环性。循环码的编码和解码设备都不太复杂,且检(纠)错能力强。它不但可以检测随机的错误,还可以检错突发的错误。(),n k循环码可以检测长为n k-或更短的任何突发错误,包括首尾相接突发错误。循环码是一种无权码,循环码编排的特点是相邻两个数码之间符合卡诺图中的邻接条件,即相邻两个数码之间只有一位码元不同,码元就是组成数码的单元。符合这个特点的有多种方案,但循环码只能是表中的那种。循环码的优点是没有瞬时错误,因为在数码变换过程中,在速度上会有快有慢,中间经过其它一些数码形式,称它们为瞬时错误。这在某

C语言循环结构复习题

循环结构程序设计复习题 一.选择题 1.以下while循环中,循环体执行的次数是:() k=1; while (--k) k=10; a) 10次b) 无限次c) 一次也不执行d) 1次2.有以下程序段,其中x为整型变量,以下选项中叙述正确的是:() x=0; while (!x!=0) x++; a) 退出while循环后,x的值为0 b) 退出while循环后,x的值为1 c) while的控制表达式是非法的 d) while循环执行无限次 3. 有以下程序段,其中n为整型变量,执行后输出结果是:() n=20 ; while(n--) ; printf(“%d”,n) ; a) 2 b) 10 c) -1 d) 0 4. 有以下程序段,其中t为整型变量,以下选项中叙述正确的是:() t=1;

while (-1) { t--; if(t) break;} a) 循环一次也不执行 b) 循环执行一次 c) 循环控制表达式(-1)不合法 d) 循环执行2次 5. 有以下程序段,其中x为整型变量,以下选项中叙述正确的是:() x=-1; do {;} while (x++); printf(“x=%d”,x); a) 该循环没有循环体,程序错误 b) 输出x=1 c) 输出x=0 d) 输出x=-1 6. 有以下程序段,其中x,y为整型变量,程序输出结果是:() for(x=0,y=0;(x<=1)&&(y=1);x++,y--) ; printf(“x=%d,y=%d”,x,y); a) x=2,y=0 b) x=1,y=0

x=0,y=0 d) x=1,y=1 c) 解析:在开始时 x=0,y=0; 进入循环判断(x<=1)&&(y= 1) 条件成立,同时把1赋给y,此时x=0,y=1; 然后执行 x++,y--,执行之后x=1,y=0; 再进入循环判断(x<=1)&&(y= 1),条件成立,同时同时把1赋给y,此时x=1,y=1; 然后执行 x++,y--,执行之后x=2,y=0; 再进入循环判断(x<=1)&&(y= 1),条件不成立,跳出循环 输出x=2,y=0 。 7. 有以下程序: main() { int x=0,y=0; while(x<5&&++y) y--,x++; printf(“%d,%d”,y,x); } 程序的输出结果是:() a) 0,5 b) 1,5 c) 0,4 d) 1,4 8. 有以下程序:main() int num=0; { do ,num); } { num++ ;printf(“%d\n” while(num<=2); } 程序的输出结果是:() 1 1c) 1 d)

crc循环冗余码的计算

CRC循环冗余码的计算 三、循环冗余码(CRC) 1.CRC的工作方法 在发送端产生一个循环冗余码,附加在信息位后面一起发送到接收端,接收端收到的信息按发送端形成循环冗余码同样的算法进行校验,若有错,需重发。 2.循环冗余码的产生与码字正确性检验例子。 例1.已知:信息码:110011 信息多项式:K(X)=X^5+X^4+X+1 生成码:11001 生成多项式:G(X)=X^4+X^3+1 (r=4) 求:循环冗余码和码字。 解:1)(X5+X4+X+1)*X4的积是 X9+X8+X5+X4 对应的码是1100110000。 或者 G(X)的模是4,所以在信息码的后面加4个0得1100110000 2)积/G(X)(按模二算法)。 由计算结果知冗余码是1001,码字就是1100111001。 __________1 0 0 0 0 1 ←Q(X) G(x)→1 1 0 0 1)1 1 0 0 1 1 0 0 0 0←F(X)*Xr 1 1 0 0 1 , 1 0 0 0 0 1 1 0 0 1 1 0 0 1←R(X)(冗余码) 例2.已知:接收码字: 1100111001 多项式:T(X)=X^9+X^8+X^5+X^4+X^3+1 生成码: 11001 生成多项式:G(X)=X^4+X^3+1 (r=4) 求:码字的正确性。若正确,则指出冗余码和信息码。 解:1)用接收码字除以生成码,余数为0,所以码字正确。

1 0 0 0 0 1←Q(X) 1 1 0 0 1 )1 1 0 0 1 1 1 0 0 1←F(X)*Xr+R(x) G(x) 1 1 0 0 1 , 1 1 0 0 1 1 1 0 0 1 0←S(X)(余数) 2)因r=4,所以冗余码是:1001,信息码是:110011 四、海明码 ●对于16位的数据,需要(47)个校验位才能构成海明码。 在某个海明码的排列方式D9D8D7D6D5D4P4D3D2D1P3D0P2P1中,其中D i(0≤i≤9)表 示数据位,P j(1≤j≤4)表示校验位,数据位D8由 (48) 进行校验。 (47) A、3 B、4 C、5(2的k次方>=16+k) D、6 (48) A、P4P2P1 B、P4P3P2C、P4P3P1 D、P3P2P1 D9 D8 D7 D6 D5 D4 P4 D3 D2 D1 P3 D0 P2 P1 h14 h13 h12 h11 h10 h9 h8 h7 h6 h5 h4 h3 h2 h1 D8位对应h13,然后算:8+4+1=13,所以要第四位(p3)第八位(p4)第一位(p1)来校验 了。 答案就是:p4p3p1

循环结构程序设计课后习题及答案

循环结构程序设计习题及答案1、循环语句的三要素分别 是、、。 2、for语句括号内的3个表达式的作用分别 是、、。 3、在2层循环嵌套中,外层循环语句的每个执行周期中,内层循环语句都要完整地,只有当时,才结束整个循环。 4、在循环结构中,break语句的作用是;continue语句的作用是。 5、当循环条件一开始就为假时,对于while语句、do…while语句、for 语句,分别执行循环体次、次、 次。 6、下面程序段的执行次数: int a=0; while(a=0) { printf("good\n"); a--; } 7、下面程序段的执行次数: int a=0; while(a==0)

{ printf("good\n"); a--; } 8、下面程序段的执行次数: int a=1; while(a=1) { printf("good\n"); a++; } 9、下面程序段的执行次数: int a=1; while(a==1) { printf("good\n"); a++; } 10、下列程序段的运行结果是。 for(i=5;i>=0;i--) printf(“%d “,i); 11、下列程序段的运行结果是。 for(n=1;n<20;n=n+3) printf(“%d “,n); 12、下列程序段的运行结果是。

for( ch='a' ;ch<='e' ;ch++) printf(“%d“,ch-97); 13、下列程序段的运行结果是。 for(i=1,j=5 ; i

浅谈火力发电厂运煤系统控制及联锁

浅谈火力发电厂运煤系统控制及联锁 【摘要】本文针对2×135MW机组火力发电厂运煤系统控制及联锁提出一些见解。 【关键词】运煤系统;控制;流程;联锁。 引言 随着火力发电厂运煤系统自动化程度越来越高,运煤系统控制基本上实现了无人值守,集中或者就地控制。本文就以新疆阿勒泰地区A火力发电厂为例,浅谈火力发电厂运煤系统控制及联锁。 1.概述 A电厂项目为新建工程,本期工程装机容量为2×135MW凝汽式汽轮发电机组配2×440t/h超高压、一次中间再热燃煤锅炉。运煤设备运行班制为三班制,每班运行3.3 小时。厂内设3个地下煤斗串联为系统上煤,运煤系统设筛碎、除铁、中部采样、电子皮带秤、动态循环链码效验装置等。 2.运煤系统控制范围 带式输送机;振动给煤机;电动挡板三通管;滚轴筛;环锤式碎煤机;除铁器;电动犁式卸料器;电子皮带秤;运煤系统保护一次元件(包括双向拉绳开关、两级跑偏开关、速度检测器、料流检测器、纵向撕裂保护装置、堵煤检测器、防闭塞装置及煤仓高低料位计);排水泵;煤场抑尘自动控制系统 3.运煤系统控制及联锁要求 运煤程控系统参加联锁的设备包括带式输送机、振动给煤机、电动挡板三通管、滚轴筛、环锤式碎煤机、电动犁式卸料器等。 运煤系统集中和就地两种控制方式的设定是由设置在各设备就地控制箱或MCC上的远方/就地选择开关完成的。此外,在就地控制箱或就地MCC上还设有启、停按钮及信号灯等。只有当选择开关设置为远方时,运煤程控室才能控制该设备,当选择开关设置为就地时,只能就地控制该设备。选择开关的状态信息用干接点送至运煤程控的PLC系统中,以便操作员随时了解现场情况。 当采用自动运行方式时,上位工控机显示器上显示所有运煤工艺流程,选择运煤流程后,PLC系统自动检测该流程相关的设备,在该流程所有设备均处于可控情况下,操作人员在上位工控机上发出“启动”命令来启动该流程,否则,PLC 系统内部联锁应能防止任何设备的启动。在需要停止该流程时,操作人员在上位工控机上发出“停止”命令,PLC系统按正常清除顺序停止。

8位可逆循环计数器

一、概述 随着科技的日益进步,计数器得到了越来越广泛的应用,发展的也越快。在数字系统中使用的最多时序逻辑电路要算是计数器了。计数器不仅能用于对时钟脉冲计数,还可以用于分频、定时、产生节拍脉冲和脉冲序列以及进行数字运算等。本次实验的思路主要是设计一个8位可逆循环计数器,该计数器加计数到最大值(11111111)时输出一个周期的高电平信号(表示计数器达到最大值)并自动变为减计数,减计数到最小值(00000000)是输出一个周期的高电平信号(表示计数器达到最小值)并自动变为加计数。如此循环往复。要求设计层次化。实验中用到的器件主要包括74LS191D、7段显示器、555组成的多谐振荡电路和多个门电路。 二、方案论证 为了实现本实验的主要内容,首先要利用555定时器制成一个多谐振荡电路作为时间脉冲为同步十六进制加/减计数器74LS191D提供时间信号,并且要将多谐振荡电路的频率设为HZ,即周期为秒。因为要实现计数器加到最大值(11111111)(或最小值(00000000))时输出一个周期的高电平信号,故需要加入多个门电路和灯泡,同时要求加数器数器自动变为减数器(或减数器自动变为加数器)故利用T触发器实现该功能,并能够实现循环往复的功能。其原理框图如图1所示。 图1 电路的原理框图脉冲信号 直流稳压电源滤波、整波 555时钟信号脉冲 电路 74LS191D十六 进制计数器 74LS191D十六 进制计数器 数码管显示 输出一个周期的 高电平信号 计数器自动的由加数器转换为减数器或相反

三、电路设计 1.直流稳压电源电路 直流稳压电源包括电源电容电阻;其组成电路如图2所示。 图2 直流稳压电源电路 2. 时钟信号脉冲电路 555定时器是一种多用途的数字—模拟混合电路,利用它能极方便的构成多谐振荡器,且成本低,只需外接几个电阻、电容,就可以实现多谐振荡来产生时钟信号用来计时。 电容C2通过R3和R4开始充电,充到1/3Vcc时,输出上升为高电平,电容继续充电,直到2/3Vcc时,输出又降为低电平,电容向R3放电,放到1/3Vcc时,又开始充电,一直循环,就形成了脉冲。充电的时间T1=R1C ln2,放电时间T2=(R1+R2)C ln2,所以一个周期的时间为T=T1+T2=(R1+2R2)C ln2。令C2=C3=10uF,T=1s,所以f=1Hz。在此我们设置R1=44k,R2=50k即可达到输出频率为1s的脉冲信号。由此组成的555多谐振荡电路如图3所示。 图3 时钟信号脉冲电路

while循环结构例题

引子 #include "stdio.h" main() { int i=1; for(i=1;i<=10000;i++) printf(“%d\t”,i); } 题型1 输入输出多个数据 eg1、输出1~10000之间所有的整数#include "stdio.h" main() { int i=1; while(i<=1000) {printf(“%d\t”,i); i++;} } 拓展:1、换成所有的奇数 2、换成所有的偶数 题型2 有限个数连加和连乘

eg2.1、求1+2+3+4+………+100的值 #include "stdio.h" main() { int i=1,s=0; while(i<=100) {s=s+i; i++;} printf(“%d\n”,s); } 拓展:1、求1+2+3+4+………+n的值 2、求12+22+32+………+n2的值 3、求1+1/2+1/3+………+1/n的值eg2.2、求n!的值 #include "stdio.h" main() { int i=1,n,p=1; scanf(“%d”,&n); while(i<=n) {p=p*i; i++;} printf(“%d\n”,p); }

拓展:求1!+2!+3!+………+n!的值 #include "stdio.h" main() { int i=1,n,p=1,s; scanf(“%d”,&n); while(i<=n) {p=p*i; s=s+p; i++;} printf(“%d\n”,s); } 题型3 无限个数连加 eg3、求1-1/3+1/5-1/7+………的近似值,要求精度要达到10-4 #include "stdio.h" #include "math.h" main() { float n=1,s=0,f=1,t=1; while(fabs(t)>=1e-4) {t=f/(2*n-1); s=s+t;

计算机网络原理 循环冗余码

计算机网络原理循环冗余码 循环冗余校验码(CRC:Cyclic Redundancy Code)借助于循环码来实现校验。循环码不同于奇偶校验码,它有两个显著特点:一是循环码适合于用代数方法分析码的结构,并可以用代数方法设计各种实用的、有较强纠错能力的码,并且无需很长的码长;二是由于码的循环特性,所需的编、译码设备比较简单,易于实现。因此循环码在实际中得到广泛应用。1.CRC的工作方法 在发送端产生一个循环冗余码,附加在信息位后面一起发送到接收端,接收端收到的信息按发送端形成循环冗余码同样的算法进行校验,若有错,需重发。 2.循环冗余码的产生与码字正确性检验例子。 例1.已知:信息码:110011 信息多项式:K(X)=X5+X4+X+1 生成码:11001 生成多项式:G(X)=X4+X3+1(r=4) 求:循环冗余码和码字。 解:1)(X5+X4+X+1)*X4的积是X9+X8+X5+X4对应的码是1100110000。 2)积/G(X)(按模二算法)。 由计算结果知冗余码是1001,码字就是1100111001。 G(x) 11001 10000 1001 ×X r 例2.已知:接收码字:1100111001 多项式:T(X)=X9+X8+X5+X4+X3+1 生成码:11001 生成多项式:G(X)=X4+X3+1(r=4) 求:码字的正确性。若正确,则指出冗余码和信息码。 解:1)用字码除以生成码,余数为0,所以码字正确。 G(x) 11001 11001 11001 ×X r+R(x) S(x) 2)因r=4,所以冗余码是:11001,信息码是110011 3.循环冗余码的工作原理 循环冗余码CRC在发送端编码和接收端校验时,都可以利用事先约定的生成多项式G(X)来得到,K位要发送的信息位可对应于一个(k-1)次多项式K(X),r位冗余位则对应于一个(r-1)次多项式R(X),由r位冗余位组成的n=k+r位码字则对应于一个(n-1)次多项式T(X)=Xr*K(X)+R(X)。 循环码又被称为(n-k)循环码,这是因为此码共n位,其中前k位为数据位,后(n-k)位为冗余位。其组成如表所示。其中r代表冗余位,m代表原始数据。 ●全部奇数个错误 ●全部双字位错误

实验6 循环码的软件编、译码实验

实验六循环码的软件编、译码实验 一、实验目的 (1)通过实验了解循环码的工作原理。 (2)了解生成多项式g(x)与编码、译码的关系。 (3)了解码距d与纠、检错能力之间的关系。 (4)分析(7.3)循环码的纠错能力。 二、实验要求 用你熟悉的某种计算机高级语言或单片机汇编语言,编制一(7,3)循环码的编、译码程序,并改变接受序列R(x)和错误图样E(x),考查纠错能力情况。 设(7,3)循环码的生成多项式为:g(x)=x4+x3+x2+1 对应(11101)(1)按编、译码计算程序框图编写编、译码程序 (2)计算出所有的码字集合,可纠的错误图样E(x)表和对应的错误伴随式表。 (3)考查和分析该码检、纠一、二位错误的能力情况。 (4)整理好所有的程序清单,变量名尽量用程序框图所给名称,并作注释。 (5) 出示软件报告. 三、实验设计原理 循环码是一类很重要的线性分组码纠错码类,循环码的主要优点是编、译码器较简单,编码和译码能用同样的反馈移存器重构,在多余度相同的条件下检测能力较强,不检测的错误概率随多余度增加按指数下降。另外由于循环码具有特殊的代数结构,使得循环码的编、译码电路易于在微机上通过算法软件实现。 1、循环码编码原理 设有一(n,k)循环码,码字C=[C n-1…C r C r-1…C0],其中r=n-k。码字多项式为: C (x ) = C n-1x n-1+ C n-2x n-2+… +C1x+C0。 码字的生成多项式为: g(x)= g r-1x r-1+g r-2x r-2+…+g1x+g0 待编码的信息多项式为:m(x)=m K-1x K-1+…+m0 x n-k.m(x)=C n-1x n-1+…+C n-K x n-K

相关文档
最新文档