Bit Counting Algorithm Using Bitwise Operations

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing methods for counting set and unset bits in data processing systems are inefficient, particularly in applications with limited resources, as they require complex hardware and lengthy computation times, and do not effectively handle sparsely or heavily populated bit patterns.

Innovation Solution

A method that initializes a bit counter and repeatedly applies bitwise OR or AND operations with the input value and a modified version of itself, decrementing or incrementing the counter to count set or unset bits, reducing the need for additional hardware and minimizing computational steps.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Speed

If complex hardware methods (shifters, multipliers, parallel circuitry) are used for bit counting, then counting speed is improved, but device complexity and hardware cost increase

Engineering Contradiction:
Improvebit counting speedVSAvoidhardware complexity
Core Design Contradiction:
SpeedVSDevice complexity

Solution Approach 1:

The patent replaces complex hardware circuits (shifters, multipliers, parallel circuitry) with software-based bitwise operations. The bit counting function is implemented through sequential bitwise AND/OR operations combined with arithmetic operations, eliminating the need for dedicated complex counting hardware while achieving acceptable performance through algorithmic efficiency.

Inventive Principle:
Principle #28Mechanics substitution (Replace mechanical system)

Solution Approach 2:

The patent creates intermediate copies of the input value through bitwise operations (such as copying bits to adjacent positions) to enable parallel counting logic to be simulated through sequential operations. These intermediate representations allow the algorithm to count multiple bits simultaneously through software rather than requiring physical parallel hardware paths.

Inventive Principle:
Principle #26Copying

2Adaptability or versatility

If traditional bit counting methods are used, then all bit patterns are handled, but computational time increases for sparsely or heavily populated patterns

Engineering Contradiction:
Improvebit pattern handling capabilityVSAvoidcomputation time
Core Design Contradiction:
Adaptability or versatilityVSLoss of time

Solution Approach 1:

The patent dynamically changes the counting parameter (which bits to count) based on the input pattern characteristics. By using bitwise AND operations with selectively positioned 1s, the algorithm can efficiently count either set bits or unset bits depending on the population density of the input, adapting to sparsely or heavily populated patterns without requiring separate specialized algorithms.

Inventive Principle:
Principle #35Parameter changes

Solution Approach 2:

The patent performs partial counting operations by applying bitwise AND masks that selectively enable counting of only relevant bit positions. Rather than always performing full 32-bit or 64-bit counting operations, the algorithm can skip over regions known to be uniform or use excessive operations (counting all bits) when the input pattern suggests it will be faster than optimizing for sparse cases.

Inventive Principle:
Principle #16Partial or excessive action

Data Source

PatentUS8560586B2Linear bit counting implementations
Publication Date: 2013.10.15 BELL MELTIN
  • US8560586B2 patent drawing
  • US8560586B2 patent drawing
  • US8560586B2 patent drawing

AI summary

Counting the number of set and unset bits in an n-bit data word or stream of data is most efficient in applications where the data can be characterized as sparsely populated (bits mostly or all unset/0) and/or heavily populated (bits mostly or all set/1). In these populations, processing can be linearly proportional to the smaller number of differing bit values resulting in compute time and resource savings. In any population, the operations of the bit counting methods, systems, apparata and computer program products described are bounded by the number of bits counted in the data word/stream. The described operations can be used for determining whether further processing of the data stream is required as well as the extent of that processing.