u3のような任意ビット幅整数
ビット幅を正確に指定した数値型を使います
「u3のような任意ビット幅整数」はCoddyKit上の無料Zig Academyレッスンです。 これはレッスン2/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはZig Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Zig Academyコースには全4レッスンが含まれています。
u8とu32の先へ
Zigで使えるサイズは一般的なものだけではありません。u1から非常に大きな値まで、任意のビット幅の整数を指定できます。
uNパターン
u の後ろに数値を記述すると、そのビット数ちょうどの符号なし整数を取得できます。たとえば u3 は3ビットを保持します。
const level: u3 = 5;符号付きの型もある
uをiに置き換えると、任意の幅の符号付き整数を取得できます。たとえば i4 は小さな符号付き範囲を表します。
const delta: i4 = -3;範囲を正確に制御する
u3 は0から7までの値を格納します。3ビットで8通りを表せるためです。型自体がその範囲を保証します。
上限と下限を確認する
自分で覚えておく代わりに、maxInt と minInt を使って型の境界値を取得できます。
const hi = std.math.maxInt(u3); // 7
const lo = std.math.minInt(u3); // 01ビットの整数もある
u1 は0または1だけを保持し、直接保存や計算ができる単一の生ビットのように機能します。
const bit: u1 = 1;u0も実在する型
u0 も存在します。値は常に0で、ビットをまったく占有しません。ジェネリックコードで便利です。
パックされたフィールドに最適
u3やu5のような通常とは異なる幅は、packed struct の中で特に有効です。各フィールドに必要なビットだけを正確に割り当てられます。
const Color = packed struct {
r: u5,
g: u6,
b: u5,
};オーバーフローに注意する
u3 に8を代入すると範囲を超えてオーバーフローします。安全モードでは、Zigが暗黙にラップさせず、実行時にこれを検出します。
キャストして幅を広げる
より広い範囲で計算したい場合は、@as または @intCast を使って、狭い型の値を広い型へ移します。
const small: u3 = 5;
const big: u16 = @as(u16, small);意図を表現する
任意のビット幅を使うと、型システムに実際の制約を記録できます。u4 なら、値が15を超えないことが明確になります。🎯
確認問題
3ビットに何種類の異なる値を格納できるか考えてみてください。
まとめ
u3やi4のような任意幅整数について学びました。範囲を正確に指定でき、パックされたフィールドに最適で、安全モードではオーバーフローも検出されます。🎉
よくある質問
「u3のような任意ビット幅整数」レッスンは無料ですか?
はい。「u3のような任意ビット幅整数」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Zig Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Zig Academyコースには全4レッスンが含まれています。
「u3のような任意ビット幅整数」で何を学びますか?
ビット幅を正確に指定した数値型を使います ブラウザで直接実行するハンズオンコードでZig Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Zig Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのZig Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/4です。
「u3のような任意ビット幅整数」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このZig Academyレッスンでコードを書いて実行できますか?
はい。すべてのZig Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。