前言:
现在各位老铁们对“奇偶校验算法c”大约比较珍视,大家都需要分析一些“奇偶校验算法c”的相关知识。那么小编也在网络上网罗了一些对于“奇偶校验算法c””的相关内容,希望朋友们能喜欢,看官们快快来学习一下吧!继续整理牛客网经典Verilog习题讲解,牛客网里除了最新的Verilog题库还有其它领域的经典笔试、面试题,大家快和我一起刷起来吧(「链接」)。
题目
需要对输入的32位数据进行奇偶校验,根据sel输出校验结果(1输出奇校验,0输出偶校验):
分析
很多朋友刚拿到此题的时候,可能根据波形连需求都看不明白,这点也是牛客的缺点,题干写的过于简单!!
首先需要明白什么是奇偶校验,其实这是来判断数据总线上有奇数个‘1’,还是偶数个‘1’;通常奇偶校验会用在环境简单的传输通道,检验数据是否在传输过程中发生错误。
明白何为奇偶校验后,还需要注意题目中有sel信号,如题所述,该信号为‘1’时,需要输出奇校验,为‘0’时,需要输出偶校验。
题解
在完成该题时,可以用到按位计算的操作(操作符在前,变量在后),比如 |a(按位或)、&a (按位与) 、 ^a (按位异或)。
本题在计算奇校验时用到了按位异或,因为异或的特点就是偶数个‘1’时输出0,奇数个‘1’时输出‘1’。(具体可以通过枚举法感受一下)
而偶校验只需对奇校验取反即可,在下面的题解中,我用到的是“~”,是位取反的功能,在单比特情况下, ‘~’和‘!’是相同功能的。但是多比特时,‘!’是逻辑取反,只会输出‘0’或‘1‘。
标签: #奇偶校验算法c