题解 | #奇偶校验#
奇偶校验
https://www.nowcoder.com/practice/729d11d043d8448e83befa1410b694fe
#include<iostream>
//实现字符的奇校验
void addParity(char c)
{
int count = 0;
for(int i = 0;i < 8;i++)
{
if((c >> i) & 1)//相当于判断c的每一二进制位是否为1,统计1的数量
{
count++;
}
}
if(count%2 == 0)
{
c = c | (1 << 7);//1左移7位就是10000000,与c进行或运算后最高位必定是1,相当于在最高位加1
}
for(int i = 7;i >= 0;i--)//逐个输出奇校验后c的二进制位
{
std::cout << ((c >> i) & 1);
}
}
int main()
{
std::string s;
while (std::getline(std::cin, s))
{
for(int i = 0;i < s.size();i++)
{
addParity(s[i]);
std::cout << std::endl;
}
}
}

