用C语言编写一个关于计算机通信的程序
在循环冗余校验系统中,利用生成多项式G(x)=x5(x的5次)+x4(x的4次)+x+1判断接收到的报文010110001101是否正确?并计算100110001的冗余校...
在循环冗余校验系统中,利用生成多项式G(x)= x 5 (x的5次)+ x 4(x的4次) +x+1判断接收到的报文010110001101是否正确?并计算100110001的冗余校验码
展开
- 你的回答被采纳后将获得:
- 系统奖励15(财富值+成长值)+难题奖励10(财富值+成长值)+提问者悬赏20(财富值+成长值)
1个回答
展开全部
论坛只允许提示,不可以帮忙解题。
提示:
CRC g= 110011
报文 r = 010110001101
要是否报文正确, 就是用r除以g, 如果余数等于零,就是正确的; 余数不等于零就不正确,通过对余数的循环移位和补足处理,可以知道是报文的第几位出错。
r/g 的余数是00110 不是 0 , 因此报文不正确。
100110001的CRC码就是 它自己除以g的余数, 是00010
(关键: 二进制除法,就是异或运算。)
计算方法见 http://baike.baidu.com/link?url=GqdqZgirUTwt6AK9eAlQQaEQDz1OLKcBPi9JWetRapJh9EncPy-aL6x33Wt1Va-TcwnC2-FzBNjbvq40S1xwNK
C 与语言中,异或运算是位操作, "异或"运算符(^), 变量用二进制赋值比较方便
unsigned long g = 0b110011;
unsigned long r = 0b010110001101;
unsigned long remain = r%g; 这个就是余数
另外的一个你自己去做吧
提示:
CRC g= 110011
报文 r = 010110001101
要是否报文正确, 就是用r除以g, 如果余数等于零,就是正确的; 余数不等于零就不正确,通过对余数的循环移位和补足处理,可以知道是报文的第几位出错。
r/g 的余数是00110 不是 0 , 因此报文不正确。
100110001的CRC码就是 它自己除以g的余数, 是00010
(关键: 二进制除法,就是异或运算。)
计算方法见 http://baike.baidu.com/link?url=GqdqZgirUTwt6AK9eAlQQaEQDz1OLKcBPi9JWetRapJh9EncPy-aL6x33Wt1Va-TcwnC2-FzBNjbvq40S1xwNK
C 与语言中,异或运算是位操作, "异或"运算符(^), 变量用二进制赋值比较方便
unsigned long g = 0b110011;
unsigned long r = 0b010110001101;
unsigned long remain = r%g; 这个就是余数
另外的一个你自己去做吧
更多追问追答
追问
那C语言怎么实现输入二进制数
追答
C语言, 0b就是二进制,0x是16进制, 不写就是十进制。
unsigned long a = 7; 十进制
unsigned long b = 0b111; 二进制
unsigned long c = 0x07; 16进制
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询