Next: , Up: Numbers   [Contents][Index]


3.1 Integer Basics

整数の値の範囲はマシンに依存します。最小の範囲は-536,870,912から536,870,911(30ビット長の -2**29 から 2**29 - 1) ですが、多くのマシンはこれより広い範囲を提供します。このチャプターの例の多くは、最小の整数は30ビット長であると仮定します。

Lispリーダーは、(オプションで最初の符号記号と、最後のピリオドをともなう)数字のシーケンスとして整数を読み取ります。Emacsの範囲を超える整数は、浮動小数点数として扱われます。

 1               ; 整数1。
 1.              ; 整数1。
+1               ; これも整数1。
-1               ; 整数-1。
 9000000000000000000
                 ; 浮動小数点数9e18.
 0               ; 整数0
-0               ; 整数0

基数が10以外の整数の構文は、‘#’の後に基数を指定する文字 — 2進は‘b’、8進は‘o’、16進は‘x’、‘radixr’は基数radix — を記述します。基数を指定する文字の大文字小文字は区別されません。したがって‘#binteger’はintegerを2進として読み取り、‘#radixrinteger’はintegerを基数radixとして読み取ります。radixに指定できる値は2から36です。たとえば:

#b101100 ⇒ 44
#o54 ⇒ 44
#x2c ⇒ 44
#24r1k ⇒ 44

整数にたいして処理を行なうさまざまな関数、特にビット演算(Bitwise Operationsを参照してください)を理解するためには、数を2進形式で見ることが助けになることがしばしばあります。

30ビットの2進では、10進数の整数5は以下のようになります:

0000...000101 (全部で30ビット)

(‘...’は30ビットのワードを満たすのに充分なビットを意味し、この場合の‘...’は12個の0ビットを意味します。以下の例でも、2進の整数を読みやすくするために、‘...’の表記を使用します)

整数の-1は、以下のようになります:

1111...111111 (全部で30ビット)

-1は30個の1で表現されます(これは2の補数表記と呼ばれます)。

-1から4を減じることにより、負の整数-5が得られます。10進の整数4は、2進では100です。したがって、-5は以下のようになります:

1111...111011 (全部で30ビット)

この実装では、0ビットの2進の最大は、10進の536,870,911です。これは2進では以下のようになります:

0111...111111 (全部で30ビット)

算術関数は整数が範囲の外かをチェックしないので、536,870,911に1を加えると、その値は負の整数-536,870,912になります:

(+ 1 536870911)
     ⇒ -536870912
     ⇒ 1000...000000 (全部で30ビット)

このチャプターで説明する多くの関数は、数字の位置として引数にマーカー(Markersを参照してください)を受け取ります。そのような関数にたいする実際の引数は数字かマーカーなので、わたしたちはこれらの引数にnumber-or-markerという名前を与えることがあります。引数の値がマーカーの場合、マーカーの位置が使用され、マーカーのバッファーは無視されます。

Variable: most-positive-fixnum

この変数の値は、Emacs Lispが扱える整数の最大値です。典型的な値は32ビットでは 2**29 - 1 、64ビットでは 2**61 - 1 です。

Variable: most-negative-fixnum

この変数の値は、Emacs Lispが扱える最小の整数です。これは負の整数です。典型的な値は32ビットでは -2**29 、64ビットでは -2**61、 です。

Emacs Lispでは、テキスト文字は整数により表現されます。0から(max-char)までの整数は、有効な文字として判断されます。Character Codesを参照してください。