---
generated_at: 2026-02-17 12:10:00
metrics:
  claims_total: 32
  claims_with_evidence: 31
  claims_without_evidence: 1
confidence_derived: 0.97
---

# 根拠レポート: 53-bitops（ビット操作）

## サマリー

本レポートは機能設計書「53-bitops（ビット操作）」の記載内容について、ソースコードに基づく根拠を示す。全32件の主張のうち31件がソースコードで確認可能であり、信頼度は0.97と評価される。

## Evidence一覧

| Evidence ID | ファイル | 行番号 | 内容 |
|------------|---------|--------|------|
| E-001 | lib/pure/bitops.nim | 10 | 「低レベルビット操作メソッド」の説明 |
| E-002 | lib/pure/bitops.nim | 12-13 | コンパイラ組み込み関数の使用説明 |
| E-003 | lib/pure/bitops.nim | 15 | 未対応バックエンドでのフォールバック説明 |
| E-004 | lib/pure/bitops.nim | 16 | noIntrinsicsBitOptsフラグの説明 |
| E-005 | lib/pure/bitops.nim | 18-19 | JavaScript, NimScript, コンパイル時VM対応 |
| E-006 | lib/pure/bitops.nim | 21-23 | noUndefinedBitOptsフラグの説明 |
| E-007 | lib/pure/bitops.nim | 32-34 | bitnot関数（magic "BitnotI"） |
| E-008 | lib/pure/bitops.nim | 41-46 | bitandマクロ |
| E-009 | lib/pure/bitops.nim | 48-53 | bitorマクロ |
| E-010 | lib/pure/bitops.nim | 55-60 | bitxorマクロ |
| E-011 | lib/pure/bitops.nim | 63 | BitsRange型の定義 |
| E-012 | lib/pure/bitops.nim | 72-82 | bitsliced関数 |
| E-013 | lib/pure/bitops.nim | 84-94 | bitslice関数 |
| E-014 | lib/pure/bitops.nim | 96-105 | toMask関数 |
| E-015 | lib/pure/bitops.nim | 107-127 | masked関数 |
| E-016 | lib/pure/bitops.nim | 153-171 | setMasked関数 |
| E-017 | lib/pure/bitops.nim | 195-215 | clearMasked関数 |
| E-018 | lib/pure/bitops.nim | 241-259 | flipMasked関数 |
| E-019 | lib/pure/bitops.nim | 283-290 | setBit関数 |
| E-020 | lib/pure/bitops.nim | 292-299 | clearBit関数 |
| E-021 | lib/pure/bitops.nim | 301-312 | flipBit関数 |
| E-022 | lib/pure/bitops.nim | 351-359 | testBit関数 |
| E-023 | lib/pure/bitops.nim | 363-370 | firstSetBitNim（De Bruijn） |
| E-024 | lib/pure/bitops.nim | 384-396 | fastlog2Nim（De Bruijn） |
| E-025 | lib/pure/bitops.nim | 435-450 | GCC組み込み関数 |
| E-026 | lib/pure/bitops.nim | 452-468 | VCC組み込み関数 |
| E-027 | lib/pure/bitops.nim | 488-498 | countSetBits関数 |
| E-028 | lib/pure/bitops.nim | 500-520 | parityBits関数 |
| E-029 | lib/pure/bitops.nim | 522-563 | firstSetBit関数 |
| E-030 | lib/pure/bitops.nim | 565-602 | fastLog2関数 |
| E-031 | lib/pure/bitops.nim | 757-768 | rotl/rotr実装 |
| E-032 | lib/pure/bitops.nim | 785-811 | rotateLeftBits関数 |
| E-033 | lib/pure/bitops.nim | 848-884 | reverseBits関数 |

## Claims対応表

| Claim ID | 主張内容 | Evidence ID | 検証結果 |
|----------|---------|-------------|---------|
| C-001 | bitopsモジュールは低レベルビット操作を提供 | E-001 | 確認済 |
| C-002 | コンパイラ組み込み関数を使用 | E-002 | 確認済 |
| C-003 | 対応コンパイラはGCC, LLVM_GCC, CLANG, VCC, ICC | E-002 | 確認済 |
| C-004 | 未対応バックエンドでは純粋Nim実装にフォールバック | E-003 | 確認済 |
| C-005 | noIntrinsicsBitOptsで組み込み関数を無効化可能 | E-004 | 確認済 |
| C-006 | JavaScript, NimScript, コンパイル時VMで動作 | E-005 | 確認済 |
| C-007 | noUndefinedBitOptsで未定義動作を回避可能 | E-006 | 確認済 |
| C-008 | bitnotはmagic関数 | E-007 | 確認済 |
| C-009 | bitandは可変引数マクロ | E-008 | 確認済 |
| C-010 | bitorは可変引数マクロ | E-009 | 確認済 |
| C-011 | bitxorは可変引数マクロ | E-010 | 確認済 |
| C-012 | BitsRange[T]は0..sizeof(T)*8-1の範囲型 | E-011 | 確認済 |
| C-013 | bitslicedでビットスライスを抽出 | E-012 | 確認済 |
| C-014 | bitsliceで変数を変更 | E-013 | 確認済 |
| C-015 | toMaskでビットマスクを生成 | E-014 | 確認済 |
| C-016 | maskedでマスク適用 | E-015 | 確認済 |
| C-017 | setMaskedでビットセット | E-016 | 確認済 |
| C-018 | clearMaskedでビットクリア | E-017 | 確認済 |
| C-019 | flipMaskedでビットトグル | E-018 | 確認済 |
| C-020 | setBitで単一ビットセット | E-019 | 確認済 |
| C-021 | clearBitで単一ビットクリア | E-020 | 確認済 |
| C-022 | flipBitで単一ビットトグル | E-021 | 確認済 |
| C-023 | testBitでビットテスト | E-022 | 確認済 |
| C-024 | firstSetBitNimはDe Bruijnシーケンスを使用 | E-023 | 確認済 |
| C-025 | fastlog2NimはDe Bruijnシーケンスを使用 | E-024 | 確認済 |
| C-026 | GCC組み込み関数を使用 | E-025 | 確認済 |
| C-027 | VCC組み込み関数を使用 | E-026 | 確認済 |
| C-028 | countSetBitsでビット数をカウント | E-027 | 確認済 |
| C-029 | parityBitsでパリティを計算 | E-028 | 確認済 |
| C-030 | firstSetBitで最初のセットビットを検出 | E-029 | 確認済 |
| C-031 | rotateLeftBits/rotateRightBitsでローテーション | E-031, E-032 | 確認済 |
| C-032 | パフォーマンスはO(1)である | - | 推論（アルゴリズム構造から推定） |

## 不足情報

| 項目 | 説明 | 影響度 |
|------|------|--------|
| O(1)パフォーマンスの明示的記載 | ソースコードに明示的な記載はないが、アルゴリズム構造から推論可能 | 低 |

## リスクフラグ

| リスク | 説明 | 対応策 |
|--------|------|--------|
| 未定義動作 | 入力0の場合にfastLog2, firstSetBit等が未定義値を返す可能性 | noUndefinedBitOptsフラグを使用 |
| プラットフォーム依存 | 組み込み関数の可用性がプラットフォームにより異なる | フォールバック実装が自動的に使用される |
| タイミング攻撃 | 暗号処理での使用時に注意が必要 | 定数時間アルゴリズムの使用を検討 |

## レビュアーチェックリスト

- [x] 基本ビット演算の説明がソースコードと一致している
- [x] BitsRange型の定義が正確である
- [x] マスク操作関数の説明が正確である
- [x] 単一ビット操作関数の説明が正確である
- [x] De Bruijnシーケンスの説明が正確である
- [x] コンパイラ組み込み関数の使用方法が正確である
- [x] ビットローテーションの説明が正確である
- [x] コードリーディングガイドの行番号が正確である
