Write a C program to find the parity of an unsigned integer

本文提供了一种高效的C语言程序,用于判断无符号整数的奇偶性,通过位操作实现。程序核心在于使用循环迭代,通过逐次清除最低位的1来确定数字的奇偶性。

reference: 

http://www.geeksforgeeks.org/write-a-c-program-to-find-the-parity-of-an-unsigned-integer/


Problem Definition:

Parity: Parity of a number refers to whether it contains an odd or even number of 1-bits. The number has “odd parity”, if it contains odd number of 1-bits and is “even parity” if it contains even number of 1-bits.


Solution:

1. Initialize parity = 0
2. Loop while n != 0      
      a. Invert parity 
             parity = !parity
      b. Unset rightmost set bit
             n = n & (n-1)
3. return parity


Code:

/* Function to get parity of number n. It returns 1
   if n has odd parity, and returns 0 if n has even
   parity */
bool getParity(unsigned int n)
{
    bool parity = 0;
    while (n)
    {
        parity = !parity;
        n      = n & (n - 1);
    }        
    return parity;
}


Certainly! Below is a MATLAB function `TDPC_encoder` based on the specifications given: ```matlab function encoded_vector = TDPC_encoder(message_vector, radix, rows, columns) % Check input consistency if ~isscalar(radix) || ~isscalar(rows) || ~isscalar(columns) || ... (radix < 2) || (rows < 2) || (columns < 2) || ... any(message_vector >= radix) || ... (length(message_vector) ~= (rows-1)*(columns-1)) error('Invalid input arguments'); end % Reshape message into matrix X msg_len = length(message_vector); X = reshape(message_vector, rows-1, columns-1, 'F'); % Initialize Y with X and add empty row and column Y = zeros(rows, columns); Y(1:rows-1, 1:columns-1) = X; % Compute parity bits for rows and columns for r = 1:rows Y(r, columns) = mod(-sum(Y(r, 1:columns-1)), radix); % Row parity bit end for c = 1:columns-1 Y(rows, c) = mod(-sum(Y(1:rows-1, c)), radix); % Column parity bit end % Ensure last cell meets requirements Y(rows, columns) = mod(-sum(Y(rows, 1:columns-1)) - sum(Y(1:rows-1, columns)), radix); % Reshape back into vector form encoded_vector = Y(:).'; end ``` This code defines a function that takes a message vector along with parameters for the TDPC encoding process. It checks whether the inputs are valid, then rearranges the message into a matrix format, computes the necessary parity checks for rows and columns, and finally flattens the resulting matrix into an encoded vector. You can run this function with a sample message vector and specified parameters to perform TDPC encoding according to the described method. Make sure to also test its correctness and efficiency against the provided testing script or additional test cases.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值