整数の値の範囲は計算機に依存します。 最小の範囲は、−134217728から134217727まで(28ビット長、つまり から これより広い範囲を扱える計算機もあります。 本章の多くの例題では、整数は28長ビットであると仮定します。 Lispリーダは、 先頭に符号があってもよく、最後にピリオドがあってもよい、 数字の列として整数を読み取ります。
1 ; 整数1 1. ; 整数1 +1 ; これも整数1 -1 ; 整数−1 268435457 ; 桁溢れのため、これも整数1 0 ; 整数0 -0 ; 整数0
整数を扱うさまざまな関数を理解するには、 特にビット演算(see Bitwise Operations)を理解するには、 数を2進表現で考えるとよいです。
28ビット長の2進表現では、10進整数5はつぎのようになります。
0000 0000 0000 0000 0000 0000 0101
(4ビットのまとまりごとに空白を1個、 8ビットのまとまりごとに空白を2個挿入して、読みやすくする。)
整数−1はつぎのようになります。
1111 1111 1111 1111 1111 1111 1111
−1は、28個の1で表現されます。 (これを2の補数(two's complement)表記と呼ぶ。)
負の数−5は、−1から4を引いて作れます。 10進数4は、2進表記では100です。 したがって、−5は、つぎのようになります。
1111 1111 1111 1111 1111 1111 1011
この実装では、28ビット長の2進整数の最大値は、 10進で134,217,727になります。 2進表記では、つぎのようになります。
0111 1111 1111 1111 1111 1111 1111
算術関数は、整数がその範囲外に出たかどうか検査しないので、 134,217,727に1を足すと、値は負の数−134,217,728になります。
(+ 1 134217727) ⇒ -134217728 ⇒ 1000 0000 0000 0000 0000 0000 0000
本章で述べる多くの関数は、数の引数としてマーカを受け付けます。 (see Markers)。 そのような関数の実際の引数は数かマーカであるので、 それらの引数をしばしばnumber-or-markerという名前で書きます。 引数の値がマーカであるときには、その位置の値を使いバッファは無視します。