このツールについて
datasheet を開いていて、レジスタの値は 0x3F80。知りたいのは各フィールドが何を言っているか、それだけです。値を貼って、レイアウトを一度書くだけ — reserved:1, mode:3, prescaler:4, enable:1, status:7 — 各フィールドのビット範囲、生の2進、10進と16進の値が並びます。レイアウトはブラウザに保存されるので、リファレンスマニュアルの412ページを読みながら打ち込んだ定義は来週もそこにあります。同じ値が次にログに出てきたときは、紙の上でニブルを数える代わりに2秒で読めます。
signed と unsigned の読みは、切り替えボタンの裏ではなく隣同士に置いてあります。0xFF は 255 でもあり −1 でもある。どちらが本当かは、その値を作ったコードが変数をどう宣言したかだけで決まり、ここを取り違えるのは立派なバグの一類型です — −1 °C を 255 と報告するセンサー、とんでもない件数に見えるステータスフィールド。両方の列が同時に見えていれば、それは「やってしまうミス」ではなく「答えられる問い」になります。unsigned が 65,535、signed が −1 なら、もう何を見ているかは分かります。
幅は飾りではありません。1 << 40 は 32-bit なら 0、64-bit なら 1,099,511,627,776。NOT 0x0F は1バイトなら 0xF0、1ワードなら 0xFFFFFFF0。負の値の右シフトも、何ビットの世界にいるかで答えが変わります。JavaScript の <<、>>、& は計算を始める前にオペランドを 32-bit へ切り落とすので、ウェブの計算機が 64-bit の答えを黙って間違えるのはこれが原因です — 1 << 31 が負になり、2^32 を超えるものは 0 に潰れる。このページは BigInt で計算してから選んだ幅でマスクするため、64-bit の結果は厳密で、8-bit は uint8_t と同じようにきちんと折り返します。
画面の 0b0011_1111_1000_0000 を目で追って bit 7 が立っているか判断する、これは深夜2時の人間がいちばん間違える種類の数え方です。だからクリックできるビット格子があります。どのビットにも番号が振ってあり、クリックすれば反転し、2進・10進・16進、signed と unsigned の読み、ビットフィールドの分解までが一緒に更新されます。処理はすべてブラウザ内、裏にAPIのない静的ページです。これはここでは実質的な話で、未発表ハードウェアのレジスタ値は普通に機密ですし、ペリフェラルを解析しながら付けたフィールド名は、数字と同じくらいそのチップのことを喋ってしまいます。