Finding+the+parity+of+a+number

//by Richard Russell, March 2014//

The **parity** of an integer is determined by the number of set (i.e. **1**) bits in its binary representation. If there are an even number of set bits the parity is **even** and if there are an odd number of set bits the parity is **odd**. So for example %00100000 has odd parity and %00100010 has even parity.

The function below can be used to discover the parity of a 32-bit integer, it returns 0 for even parity and 1 for odd parity: code format="bb4w" DEF FNparity(X%) X% EOR= X% >> 1 X% EOR= X% >> 2 X% EOR= X% >> 4 X% EOR= X% >> 8 X% EOR= X% >> 16 = X% AND 1 code An equivalent function for 64-bit integers (//BBC BASIC for Windows// version 6 only) is as follows: code format="bb4w" DEF FNparity(X%%) X%% EOR= X%% >> 1 X%% EOR= X%% >> 2 X%% EOR= X%% >> 4 X%% EOR= X%% >> 8 X%% EOR= X%% >> 16 X%% EOR= X%% >> 32 = X%% AND 1 code