クエリ: コンピュータが主に使用する、数字を0と1の2種類のみで表わす方法のことを何というでしょう?
文章: コンピュータの数値表現 八進法と十六進法は二進法の3桁と4桁に直接対応するので、コンピュータ関連の数を表現するためなどによく使われている。たとえば、整数値を二進法で 1001001101010001 などと表示しても、ぱっとその値を把握することはできない。なので、八進法や十六進法がよく使われる。 十進の体系では、10種類の数字(0 から 9)を組み合わせて数値を以下のように表す。 八進の場合、8種類の数字を使う(0 から 7)。
文章: コンピュータの数値表現 このコンピュータの数値表現(コンピュータのすうちひょうげん)の記事では、現代のコンピュータ、つまりデジタルコンピュータにおける数値の表現方法について解説する。 文章: IEEE 754 ゼロは仮数が0の有限数である。符号が別に定義されているので、符号付の2種類のゼロ +0 と-0 が存在する。 IEEE 754標準では、5種類の基本形式を定めており、基数や符号化して使用するビット数に応じて名前が付けられている。その内訳は、32/64/128ビットで表現する3種類の二進浮動小数点形式と64/128ビットで表現する2種類の十進浮動小数点形式からなる。このうち、二進形式の初めの2種は IEEE 754-1985 で単精度 (single)・倍精度 (double) と呼ばれた形式である。3つ目の二進形式は、四倍精度 (quad) とも呼ばれる。同様に、十進形式の2種も倍精度・四倍精度と呼ばれる。 基本二進形式の典型的な精度は実際に仮数部に保持されているビット数よりも1ビット分だけ高い。これは二進形式の正規化された浮動小数点数では最上位ビット(桁)が常に1であることを利用して符号化の際にそれを省いて表現しているからである(ケチ表現)。 文章: 回転矢印表記 オリジナルの表記は以上の通りであるが、これでは矢印として「↑・→・↓・←」の4種類の符号を使っていて非効率なので、2chの巨大数スレッドで次のような別表記が考案された。この別表記によれば、回転矢印表記を表す関数は次のように定義される。 文章: リカーシブスローダウン 例えば次の図は46(十進)を表すカウンタである(このページでは見栄え上、1の塊の最初のノードが1ででない最初の桁へのポインタを持つように表現する。また、「2」の意味はすぐ後の段落で説明する)。これで最初の1でないノードを定数時間で特定できるようになった。次に1の桁を0にする処理をO(1)で実行するようにする。通常のカウンタでは1の桁を0にする際に連鎖的に繰り上がりが発生する場合があり、O(1)とならない。そこで繰り上がり処理を遅延させる。遅延した繰り上がりと0を合わせて表す数字として2を導入する。2進法に対して数字が3つあるので同じ数に対する表現が複数あることになる(冗長表現)。例えば6(十進)は110とも表現できるし、102とも22とも表現できる。しかし処理を定数時間で終わらせるためには表現に制限を加える必要がある。 文章: 常平通宝 1778年から新常平の小平銭(1枚1文)もやはり大量に鋳造され、広く流通した。この小平銭の裏面には膨大な種類があり、発行所を表わす文字、漢数字(小平銭では基本的に一から十まであるが、一部では十を超えるものも見られる)、千字文その他の漢字(記されていないものも多い)及び記号のようなものの組み合わせとなっている。一説では1万以上の種類が存在するとされているが、現存するものはそのうち恐らく6~7千種類と思われる。 常平通宝の小平銭は「葉銭」とも呼ばれる。 1866年には、時の権力者興宣大院君が財政難を打開し景福宮再建のための資金を調達することを目的に常平通宝の当百銭(百文銭)を鋳造した。裏面には「戸大當百」とある(「戸」は発行所を表わす)。しかし重量は小平銭の5~6倍に過ぎず、実際には100文では通用しなかったようである。そして財政難を打開するどころか物価上昇、大院君の執権体制の危機といった問題をもたらし、鋳造開始の2年後に当百銭は通用停止・回収されてしまった。 文章: パンチカード その後、1欄に複数の穴を開けることで英大文字と特殊記号を表現するようになった。英字は2カ所に穴を開け(Y-X-0ゾーンと数字1-9)、特殊記号は3カ所に穴を開ける(Y-X-0ゾーンと数字2-7と数字8)。一部の特殊記号は1穴または2穴で表される(EBCDICの "&" は12(Y)のみ、"-" は11(X)のみ、"/" は 0 + 1)。これにより、ゾーン [12, 11] と数字 [1-9] の組合せが何を表しているかはその欄の使いかたに依存するようになった。例えば、"12-1" という組合せは英字があるはずの欄では "A" を表し、符号付き数値があるはずの欄では正の符号つきの数字 "1" を表し、符号がないはずの位置の数字 "1" なら "12" は別の何らかの意味を持つ。EBCDICは1964年に導入され、最大6箇所に穴を開けるようになった(ゾーン [12,11,0,8,9] + 数字 [1-7])。IBMや他の製造業者は80欄カードに様々な文字コードを採用した。1969年のANSI規格では128種類の文字のパンチカード上のコードを定義しており、ホレリスコード(Hollerith Punched Card Code または Hollerith Card Code)と呼ばれる。 用途によってはバイナリ形式が使われ、それぞれの穴が1つのバイナリディジット(ビット)を表し、各欄(列)が単なるビットフィールドとして扱われ、任意の組合せで穴を開けられる。例えば704/709/7090/7094シリーズ科学技術コンピュータで使われた IBM 711 カード読取装置は欄(列)ではなく1行を36ビットワードを2つ格納したものと解釈した(72欄を使用し、8欄は無視する。無視する8欄をどこにするかは読取装置のプラグボードで変更可能だが、通常右端の8欄を無視する)。この無視される8欄(通常、73-80)をシーケンス番号を入れるのに使うことがあり、カードデックを落としたときなどにソートするのに使った。IBM 1130やSystem/360といったコンピュータでは全ての欄を使った。IBM 1402 カード読取/穿孔装置では、縦の1欄に2文字を格納するコラムバイナリというモードを使い、3欄(3行)で36ビットワードを表した。しかし、多くの古い穿孔装置は1欄に3穴までしか穿孔できず、バイナリカードを作ることはできなかった。 バイナリモードの冗談として、全部の位置に穴を開けたカードを作ることもでき、それを "lace card" と呼んだ。そのようなカードはカードとしての強度が足りず、機械の中で曲がったり詰まったりする。 文章: ブーリアン型 COMのステータスコードとして使われる32ビット整数のHRESULT型は、ゼロを成功(S_OK)、正数を準成功(S_FALSE: 失敗ではないが否定的な状態)、負数を失敗(E_FAILなど)、とみなす。成否の判定のためにSUCCEEDED()/FAILED()マクロが用意されている。C11で標準化されたerrno_t型はゼロを正常(エラーなし)とみなす。また、比較などで「小なり」「等しい」「大なり」の3通りの意味を返したい、といった場合には、負の値・ゼロ・正の値、とするのが自然であるため、たとえば代表例の strcmp() 関数では、文字列が等しいということを示すためにゼロが返される。なお、単に「文字列が等しいか?」という比較をする場合などに、以下のように論理否定演算子! 文章: コンピュータの数値表現 単一のビットでは2種類の値しか表せないが、2ビット、3ビットとビットを増やすことで倍々に組合せの数を増やせる(2ビットで4通り、3ビットで8通り)。 一般に b 個のビットが取れる状態の個数 N は N = 2 である。 バイト(英: byte)はコンピュータ上で1つの文字を表す単位で、その長さは文字コード表の大きさに依存するが、典型的には8ビットのビット列を指す。コンピュータ上で計算処理を行う際のデータ単位としてワードがある。1ワードに相当するビット列の長さはコンピュータ・アーキテクチャに依存して、バイトの倍数で表せる長さが選ばれる。1バイトが8ビットのコンピュータであれば、1ワードは従って8の倍数(特に2の冪)個のビットに相当する。 文章: ステノタイプ 数字を入力するには、キーボードの上部にある数字バー(number bar)と呼ばれるキーを他のキーと同時に押す。図は、どの文字キーがどの数字に対応するかを示している。数字は昇順または降順の数字であれば文字と同じように数字を複数桁をまとめることができる。たとえば、左手でSとP、右手でL、そして数字バーを同時に押すことで、一度に138を表現することができる。また、831などの降順の数字は上記打鍵に加えてEUを同時に打鍵することでやはり1打鍵で表現可能である。231などの昇順でも降順でもない数字は別々に3打鍵(または2打鍵)打つ必要がある。多くの速記タイピストは、数字バーを使用する代わりに数字の読みで記録する。 異なる音を作るために文字を組み合わせるためのさまざまな方法がある。裁判所の記者が異なれば、その作業には異なる理論が使用される。歴史的には、記者はしばしば「ブリーフ」と呼ばれる略語をその場で作成していたが、複数のブリーフが混在していたため、ある記者が別の記者のノートを読むことが困難になることもあった。しかし現在は、主に理論を公表する会社によって提供された標準化された辞書を使用するコンピュータ翻訳のために設計されている。 しかし、学生やプロが略語辞書にかなりの数の略語を追加することが珍しくない(通常、自分でブリーフを作成する)。 一部の裁判所速記官は速記録を反訳し編集するためにスコピストと呼ばれる速記録の編集ツールを使う。スコピストは、ふりがなの書き方、英語の句読法、言語運用がまとめられている。裁判所速記官があまりにも多くの作業をしていて、自分の速記録を編集する時間がない場合に、これらは非常に役立つ。スコピストも校正ツールも、正確な記録を確実にするために裁判所速記官と密接に協力している。 ストロークのリアルタイム反訳の広範な使用は、スコピストが裁判所速記官と同時に働くことの需要を増大させた。 コンピューター支援転写(CAT)ソフトウェアで作成されたトランスクリプトを使用すると、ソフトウェアは辞書を介してリアルタイムで速記をテキストに変換するので、スコピストは速記理論に関する知識を持つ必要がなくなる。ただし、誤った単語は翻訳されず、stenoで表示される可能性があるため、スコープ設定中に状況によっては依然として有効な場合がある。スコピストと校正ツールの入手可能性に応じて、裁判所速記官は自分の写しの下書きを整理して校正を自分自身で証明するためだけにスコピストを使うか、どちらも使わずに自分で最終的な書き起こしを作成できるが、非常に手間のかかる作業である。 文章: 2次元コンピュータグラフィックス 2次元グラフィックスを作成、加工、使用するに当り、そのイメージを何らかの方法で入力しなければならない。 2次元グラフィックスを入力する方法には以下の5種類の方法がある。 2次元グラフィックスを人の目に見えるように出力する方法には、以下の4種類の方法がある。 文章: パンデジタル数 0を使わないパンデジタル数では以下の2つのフリードマン数が知られている。 文章: 位取り記数法 しかし、0のみは の二通りの表記が可能である(いわゆる負のゼロの問題)。これが原因で、コンピューター・プログラムでは0のみ例外処理を求められる場合がある。 また、一般には0は1桁の数とされているが、ルールを優先し1桁の数と認めない場合もある(覆面算#ルール)。 文章: アンパック10進数 アンパック10進数(英: unpacked BCD)とは、数値をコンピュータ上で表現する手法の一つで、BCDをベースに定義されている。ゾーン10進数とも呼ぶ。パック10進数の登場により、「パック」ではないという意味で「アンパック」と呼ばれるようになったものと推測される。10進数の1桁を、4桁のゾーンビットと4桁の数値ビットとに分けて表現する。数値の最後の桁はゾーンビットではなく正の数か負の数かを判断するための符号ビットが割り当てられる。なお、ゾーンビットは、EBCDICでは15、JIS8コードでは3を、符号ビットは、IBM互換のメインフレームでは正の数に12、負の数に13が割り当てられている。符号部についてはCOBOLベンダ各社で相違があるため、非常に互換性が低い。 文章: ゲーデル数 ゲーデル数(ゲーデルすう、英: Gdel number)は、数理論理学において何らかの形式言語のそれぞれの記号や論理式に一意に割り振られる自然数である。クルト・ゲーデルが不完全性定理の証明に用いたことから、このように呼ばれている。また、ゲーデル数を割り振ることをゲーデル数化(英: Gdel numbering)と呼ぶ。ゲーデル数のアイデアを暗に使っている例としては、コンピュータにおけるエンコードが挙げられる。 コンピュータでは何でも0と1で表し、「apple」のような文字列も0と1による数字で表す。 ゲーデル数化とは、このように文字列に数字を対応させる事を指す。ゲーデル数化は、数式におけるシンボルに数を割り当てる符号化の一種でもあり、それによって生成された自然数の列が文字列を表現する。 文章: 整数 コンピュータの内部では電気的な信号の有無を 1 と 0 に割り当て、2進法を用いて整数を表現するのが基本である。通常は、2 バイト(16 ビット)または 4 バイト(32 ビット)の範囲で表現できる範囲の数を扱う。負の値を扱う場合は、2の補数表現などが用いられる。通常は有限の範囲の整数しか扱うことができないが、処理速度を犠牲にして無限の整数を扱う方法もある。 事務処理など金額などの大きな桁や 10 進小数を正確に扱う必要がある場合、二進化十進表現を用いる。