用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(财富值+成长值)
NVworkshop
推荐于2016-03-18 · TA获得超过377个赞
知道小有建树答主
回答量:174
采纳率:100%
帮助的人:174万
展开全部
论坛只允许提示,不可以帮忙解题。
提示:
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进制
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式