Spokes.wiki Search Graph Growth About

bit-manipulation-wiki

log

Synthesis — Bit Manipulation

The evolving thesis. Spun out of the hub _inbox on 2026-06-15 from a rapid Telegram burst of bit-trick sources (Bit Twiddling Hacks, the Stack Overflow popcount question, two Stephan Brumme bits pages) — the trigger cluster that crossed the ≥3 spin-out threshold.

Current thesis

Bit manipulation (bit-manipulation) is a body of techniques for computing common integer operations directly on bits — to be branchless and/or parallel-within-a-word (SWAR) rather than using conditionals, arithmetic, or table lookups. Two motivations organize the whole field:

  1. Branchless computation (branchless-programming) — replace a data-dependent conditional with sign-bit arithmetic so there is no branch to mispredict: absolute value, sign, min/max, and the temp-free xor-swap.
  2. Parallelism within a word (SWAR) — treat a machine word as a vector of small fields and act on all at once: the parallel popcount, byte-pattern detection.

The corpus has a clear shape: canonical reference → practical question → measured reality. bit-twiddling-hacks (Sean Anderson) is the field’s primary catalog; count-set-bits-so is the genre’s most-asked practical instance (popcount); stephan-brumme‘s benchmarked pages (xor-swap, branchless-abs) are the reality check.

The central tension — elegant, but mostly superseded

The sources converge on one uncomfortable finding: most classic bit tricks are no longer performance wins. Three forces erased the advantage:

  • Dedicated instructions — POPCNT/LZCNT/TZCNT replace whole hand-rolled hacks (population-count); std::popcount (C++20) is the modern answer.
  • Compilers emit branchless code for youx<0 ? -x : x and a<b ? a : b already become conditional-move sequences, so the hand-written abs/min/max trick rarely beats -O2.
  • The naive version is often faster now — Brumme benchmarks xor-swap as slower than a temp-variable swap on modern Intel CPUs (register renaming + store-to-load forwarding, and the XOR chain’s serial dependency).

So the durable value of these tricks has shifted from raw speed to (a) correctness-critical bit work that is inherently bitwise — flags, masks, protocols, codecs, hashing, bitsets, bitboards — and (b) understanding how the machine and compiler actually behave. The modern rule the sources imply: measure, prefer the readable version, and reach for a branchless bit trick only when a profiler shows a misprediction-bound hot path the compiler didn’t already fix.

Open questions

  • The book-shaped gap. Hacker’s Delight (Henry S. Warren Jr.) is the canonical textbook these sources cite but it isn’t paged yet. Closed (2026-06-15): paged as hackers-delight (T1) — the field’s foundational text (Warren/IBM, Addison-Wesley 2002/2013). It also sharpens the central thesis: its division-by-constants and bit-counting derivations are where many of the compiler optimizations that now beat hand-written tricks were first written down — so “the compiler wins now” reads as “the compiler absorbed Hacker’s Delight.”
  • When do hand tricks still win? The “compiler/hardware wins” claim needs the boundary cases: bit-parallel algorithms with no instruction (Morton codes, specific SWAR), pre-POPCNT targets, embedded/MCU contexts. A controlled, dated benchmark would sharpen this.
  • SWAR / SIMD depth. SWAR (parallelism-within-a-register) is now its own concept page — the data-parallel half of the spoke beside branchless-programming. Open: whether true SIMD (SSE/AVX/NEON) is in scope or a sibling cluster (see adjacency); SWAR’s durable niche is precisely where SIMD isn’t available (embedded, portable, wide-word inner loops).
  • Portability/UB. Several tricks lean on arithmetic right shift of signed ints and two’s-complement — portable in practice, not by the C standard’s letter. Worth a dedicated note as the spoke grows.

Contradictions / tensions

None internal yet — the sources agree. The live tension is trick vs. compiler/hardware (recorded above), which is a finding, not a conflict: every benchmarked source lands on “the naive/modern path usually wins.”

Cross-spoke adjacency

  • optimization-algorithms-wiki — a homonym, not a neighbour. That spoke owns metaheuristic global optimization of objective functions (PSO/GA/CMA-ES, No-Free-Lunch); this spoke owns instruction-level bit/micro-optimization. The shared word “optimization” is the only overlap; do not cross-file.
  • webperf-wiki — shares a performance sensibility but at the web-delivery layer (page weight, bytes shipped), not CPU bit operations.
  • llm-inference-wiki — low-level kernels (quantization packing, bitmask attention) touch bit work, but its subject is model serving, not bit tricks per se. Watch for a genuine bridge (e.g. bit-packed quantization).

Index — Bit Manipulation Wiki

Catalog of every page, grouped by schema.org @type. Spine: synthesis (thesis), log.md (history), this file (catalog). Spun out of the hub _inbox low-level-programming cluster on 2026-06-15. Scope: bitwise/low-level integer techniques. Not metaheuristic optimization (that’s optimization-algorithms-wiki — a homonym), not web performance, not inference kernels.

DefinedTerm (concepts / techniques)

  • bit-manipulation — the hub concept: operating on bits directly (branchless + SWAR) instead of arithmetic/branches/tables · domain
  • population-count — popcount / Hamming weight: counting set bits; the method ladder (naive → Kernighan → SWAR → POPCNT) · mechanism
  • branchless-programming — replacing data-dependent conditionals with sign-bit arithmetic; the “compiler/hardware usually wins now” caveat · practice
  • swar — SIMD Within A Register: a word as a vector of lanes, operated on in parallel with masked integer ops; the data-parallel half (basis of parallel popcount, byte-pattern search) · mechanism

TechArticle (sources)

  • bit-twiddling-hacks — Sean Anderson’s canonical Stanford collection; the field’s primary catalog (seed source) · source · T1 · graphics.stanford.edu
  • xor-swap — Stephan Brumme: swap without a temp via 3 XORs; aliasing hazard + slower than temp on modern CPUs · source · T2 · bits.stephan-brumme.com
  • branchless-abs — Stephan Brumme: (x ^ (x>>31)) - (x>>31); sign-bit mask abs; superseded by compiler conditional-move · source · T2 · bits.stephan-brumme.com

Book (sources)

  • hackers-delight — Henry S. Warren Jr., Hacker’s Delight (Addison-Wesley 2002/2013); the field’s canonical/foundational text; where many compiler bit-optimizations were first written down · source · T1 · en.wikipedia.org

QAPage (sources)

  • count-set-bits-so — Stack Overflow: count set bits in a 32-bit int; the popcount method ladder (honest note — SO unfetchable, from known content) · source · T3 · stackoverflow.com

Person

Synthesis

  • synthesis — the thesis: bit manipulation as branchless/SWAR technique; canonical refs; the central “elegant-but-superseded” tension