不使用循环计算32位整数的奇偶校验位//bitParity - returns 1 if x contains an odd number of 0's “返回1假如x里有基数的0”* Examples:bitParity(5) = 0,bitParity(7) = 1 * Legal ops:& ^ | + > 可以使用的符号x = ( x >> 16 ) ^

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/09 18:31:35

不使用循环计算32位整数的奇偶校验位//bitParity - returns 1 if x contains an odd number of 0's “返回1假如x里有基数的0”* Examples:bitParity(5) = 0,bitParity(7) = 1 * Legal ops:& ^ | + > 可以使用的符号x = ( x >> 16 ) ^
不使用循环计算32位整数的奇偶校验位
//bitParity - returns 1 if x contains an odd number of 0's “返回1假如x里有基数的0”
* Examples:bitParity(5) = 0,bitParity(7) = 1
* Legal ops:& ^ | + > 可以使用的符号
x = ( x >> 16 ) ^ x;
x = ( x >> 8 ) ^ x;
x = ( x >> 4 ) ^ x;
x = ( x >> 2 ) ^ x;
x = ( x >> 1) ^ x;
return (x & 1);
}
完全看不懂,我对bit的了解太模糊了,越基础越好,越详细越好,为什么要移位,这个方法的原理是什么?而且我带进去得出来的答案和问的相反.

不使用循环计算32位整数的奇偶校验位//bitParity - returns 1 if x contains an odd number of 0's “返回1假如x里有基数的0”* Examples:bitParity(5) = 0,bitParity(7) = 1 * Legal ops:& ^ | + > 可以使用的符号x = ( x >> 16 ) ^
理解这段代码的要点在于搞明白三个操作符:
移位>>:向右移动指定的位数,最右边挤掉相应的位数会被丢弃,而左边补0;
按位异或^:两个数按位进行异或运算,若对应的两位不同(即一个为0,另一个为1),返回1;否则(即同为0或同为1)返回0.
按位与&:两个整数按位进行与运算,例如 x&1得到的结果是取出x的最右一位.
 
明白了这两个操作符,后面就容易理解了:
x = ( x >> 16 ) ^ x; 这一句把高16位右移16位,和低16位进行按位异或运算,这样就会消掉偶数个数的1(两个相同位置的1会得到0).需要注意的是,计算是按照32位整数进行的,但是高16位的结果我们并不关心,因为原整数究竟有奇数或是偶数个1的信息已经完全反映在低16位里面了.
x = ( x >> 8 ) ^ x; 这一句进一步把低16位里面的左边8位右移并与右边8位进行异或运算.类似的,运算仍然是按照32位整数进行的,但是我们只关心最右边的8位,经过这一步运算后,又会消掉偶数个1.
x = ( x >> 4 ) ^ x; 后面依此类推.
x = ( x >> 2 ) ^ x;
x = ( x >> 1) ^ x; 直到这一步,我们把原32位整数包含1的个数奇偶性信息最终体现在最右边的1位上面.
return (x & 1); 通过按位与运算,把最后一位取出并返回.
就整个算法而言,你可以这样来理把32位整数折叠成为两个16位整数进行运算,各对应bit若同为1则结果为0,有一个为1则结果为1,同为0结果也为0,所以折叠的结果会消除偶数个1,不改变奇偶性信息.然后再折叠得到8位数、4位数、2位数,最后得到的1位数就是奇偶校验位了.
 
哦对了,题目说的是“奇数个0”,这个和“奇数个1”是一样的,原因不用解释了吧?

不使用循环计算32位整数的奇偶校验位//bitParity - returns 1 if x contains an odd number of 0's “返回1假如x里有基数的0”* Examples:bitParity(5) = 0,bitParity(7) = 1 * Legal ops:& ^ | + > 可以使用的符号x = ( x >> 16 ) ^ 一个异步串行通信的计算问题不大懂.1.设异步串行通信的波特率为1000bps,1起始位,8数据位,1停止位,不采用奇偶校验位.试计算:(1)发送1位数据经历的时间;(2)发送1帧数据经历的时间;(3)在此情况 起始位、数据位、奇偶校验位和停止位的概念、含义 和作用?请各位大神分别告知下, 2.编程题.输入一个正整数n,使用一重for循环,不使用自定义函数,计算下式的和(保留4位小数). 一道“通信原理”题目,用奇偶校验码进行校验,设每组数据有7bit,附加1位偶数校验位.若输入数据为110100100011100100001,试写出编码后的序列? 管理信息系统题目~~校验位码题目:设ABCDEFG为人员代码前7位,H为人员代码的校验位.试求计算原代码为4365216,权数:19,17,13,11,7,5,3,模数取13时得校验位.并编写相应得计算机程序及测试用例.希望 身份证的校验位是什么意思? 1、 输入一个正整数n,用3种方法分别计算下式的和(保留4位小数)(1) 使用一重循环,不使用自定义函数.(2) 定义和调用函数fact(n)计算n的阶乘.(3) 使用嵌套循环.输入输出示例:Input n: 1 【计算机组成原理】如何计算CRC校验位?假设计算机准备发送的信息是1010 1100 1000 1111 ,生成多项式是X5+X2+1,计算CRC校验位,写出完整校验位. MSCOMM串口通讯的中的奇偶校验位的参数都是什么意思?MSCOMM串口通讯的中的奇偶校验位的参数都是什么意思:even,mark,no,odd,space?我知道even是偶校验,odd为奇校验,no为无校验,但是mark,我想每帧都 编写一个Java应用程序,使用while循环计算1-1000之间能同时被7和17整除的整数之和. 计算机网络原理计算题目在速率为1200BPS的异步传输规程通信适配器中,求采用7位数据位,1位校验位和1位停止位时的有效传输速率 答案中的7+1+1+1是什么意思 采用串行接口进行七位ASCII码传送,带有1位奇偶校验位,1位起始位和1位停止位,当波特率为9600波特时,字符传送速率为____.A.960 B.873 C.1371 D.480 请问一个海明码的问题请问对于一个海明码,其每一个校验位是分别校验第几位信息为的啊,比如说P0P1D1P3D2D3D4P4D5D6D7D8P5 其中Pi为校验位Di为信息位 请问校验位分别检验那几位,为什么 能检测出2位错误,并能纠正1位错误的效验码是( )A、奇偶校验码 B、循环冗余码C、BCD码 C、海明码 5.若下列字符码(ASCII)中有奇偶校验位,但没有数据错误,采用偶校验的字符码是 ()A.11001011 B.11010110 C.11000001 D.11001001 使用while循环,打印出1—100之间能被9整除的所有整数. 在Transact-SQL中,使用WHILE循环打印10以内被三整除的整数