プリミティブデータ型

ウィキペディアから、無料の百科事典
ナビゲーションにジャンプ 検索にジャンプ

コンピュータサイエンスではプリミティブデータ型は、他のすべてのデータ型を構成する基本的なデータ型のセットです。[1]具体的には、特定のプロセッサで使用されている限られたデータ表現のセットを指すことが多く、コンパイルされたすべてのプログラムで使用する必要があります。特定の表現は異なりますが、ほとんどのプロセッサは同様のプリミティブデータ型のセットをサポートしています。[2]より一般的には、「プリミティブデータ型」はプログラミング言語に組み込まれている標準データ型を指す場合があります[3] [4]プリミティブではないデータ型は、派生データ型または複合データ型と呼ばれます。[3]

プリミティブ型はほとんどの場合値型ですが、複合型も値型である場合があります。[5]

一般的なプリミティブデータ型

Java仮想マシンのプリミティブデータ型のセットは次のとおりです。[ 6]

  • さまざま範囲と精度byte整数型(short、、、、、intlongchar
  • 1つまたは2つの精度の浮動小数点数; floatdouble
  • ブール値、論理値trueおよびfalseboolean
  • 実行可能メモリアドレスを参照する値。returnAddress)これはJavaプログラミング言語からはアクセスできず、通常は省略されています。[7] [8]

これらのプリミティブ型は、整数サイズが変化する場合や浮動小数点がないハードウェアを除いて、一般にコンピュータハードウェアでサポートされているものとまったく同じです。このようなプリミティブの操作は通常、非常に効率的です。プロセッサにネイティブなプリミティブデータ型は、コンピュータのメモリ内のオブジェクトと1対1で対応しており、ほとんどの場合、これらの型での操作が可能な限り最速です。[9]たとえば、整数の加算は単一のマシン命令として実行でき、文字のシーケンスを単一の命令で処理するための特定の命令を提供するものもあります。[10]ただし、プリミティブデータ型の選択はパフォーマンスに影響を与える可能性があります。たとえば、SIMDを使用すると高速になります。floatの配列を操作するための操作とデータ型。[9] :113 

基本的なCデータ型のセットは、Javaのものと似ています。少なくとも、、、、、およびの4つのタイプがありますがchar修飾子、、、、およびintCにターゲットに依存する整数および浮動小数点のプリミティブ型が多数含まれていることを意味します[11]floatdoubleshortlongsignedunsigned

整数

整数データ型は、ある範囲の数学整数を表します。整数は、符号付き(負の値を許可)または符号なし(非負の整数のみ)のいずれかです。一般的な範囲は次のとおりです。

サイズ(バイト サイズ(ビット 名前 符号付き範囲(2の補数表現) 符号なし範囲
1バイト 8ビット バイトオクテットcharC99の最小サイズlimits.h CHAR_BITを参照) −128〜 + 127 0から255
2バイト 16ビット x86 ワードshortintC での最小サイズ −32,768〜 + 32,767 0〜65,535
4バイト 32ビット x86ダブルワード、Cでの最小サイズ、最新のCコンパイラlongの実際のサイズ、 [12] IA-32互換プロセッサ ポインタint −2,147,483,648〜 + 2,147,483,647 0から4,294,967,295
8バイト 64ビット x86 4倍ワード、Cでの最小サイズ、最新のCコンパイラlong longの実際のサイズ、 [12] x86-64互換プロセッサ のポインタlong −9,223,372,036,854,775,808から+9,223,372,036,854,775,807 0から18,446,744,073,709,551,615

浮動小数点数

浮動小数点数は、小数部分を持つ可能性ある限定精度の有理数を表します。これらの数値は、科学的記数法と同等の形式で内部的に格納されます。通常は2進数ですが、 10進数の場合もあります浮動小数点数の精度には限界があるため、正確に表現できるのは実数または有理数のサブセットのみです。他の数値はおおよそしか表すことができません。多くの言語には、単精度(「float」と呼ばれることが多い)と倍精度型(「double」と呼ばれることが多い)の両方があります。

ブール値

通常「bool」または「boolean」で示されるブール型は、通常、値「true」または値「false」のいずれかを持つことができる論理型です。値セット「true」および「false」に対応するために必要なビットは1つだけですが、プログラミング言語は通常、ブール型を1バイト以上として実装します。

多くの言語(JavaPascalAdaなど)は、ブール値の概念に準拠したブール値を別個の論理型として実装していますただし、言語は、ブール値とブール式に拡張セマンティクスを提供したり、以前のバージョンの言語との下位互換性を実現したりするために、ブール値を数値型に暗黙的に変換する場合があります。たとえば、ANSI Cおよびその以前の標準に従ったCプログラミング言語の初期バージョンには、専用のブール型がありませんでした。代わりに、ゼロの数値は「false」として解釈され、その他の値は「true」として解釈されます。[13]新しいC99stdbool.h[14]に含めることができる別個のブール型を追加し、C ++は組み込み型としてサポートboolし、「true」と「false」を予約語としてサポートします。[15]

XMLスキーマ

XMLスキーマ定義言語は、19のプリミティブデータ型のセットを提供します。[ 16]

組み込み型

JavaScriptには、string、number、bigint、boolean、undefined、symbol、およびnullの7つのプリミティブデータ型があります。これらはオブジェクトではなく、メソッドもありません。[18]

高度なプログラミング言語に組み込むことができるタイプは次のとおりです。

文字と文字列

文字タイプは、すべてのUnicode文字表すことができるタイプであるため、少なくとも21ビット幅である必要があります。Cには型が含まれますが、アドレス可能な最小のメモリ単位として定義されており、 POSIXなどのいくつかの標準では8ビットである必要がありますしたがって、すべてのUnicode文字を表すには小さすぎます。代わりに、標準では通常、整数型と呼ばれます。「char」という用語は、 Javaの16ビット整数型にも使用されますが、これも文字型ではありません。[19] Juliaなどの一部の言語には、プリミティブとして真の32ビットUnicode文字型が含まれています。[20]char

JavascriptPythonRuby、およびBASICの多くの方言などの他の言語には、プリミティブ文字型はありませんが、代わりに、通常はUTF-8エンコーディングを使用して、プリミティブデータ型として文字列を追加します。通常、長さが1の文字列は、単一の文字を表すために使用されます。

一部のコンピュータハードウェアには、文字列を処理するときに役立ついくつかの命令があります。たとえば、x86-64は、アイテムのシーケンスを移動、設定、検索、または比較できます。アイテムの長さは1、2、4、または8バイトです。[21]

範囲

範囲数値データ型には、その最大値と最小値が埋め込まれていますAdaPascalなどの一部の言語に含まれています。範囲外の数値を格納しようとすると、使用されている言語によっては、コンパイラ/ランタイムエラー、または誤った計算(切り捨てによる)が発生する可能性があります。実際には、コンパイラは最も適切なプリミティブ整数または浮動小数点型を自動的に選択します。

も参照してください

参考文献

  1. ^ ストーン、RG; クック、DJ(1987年2月5日)。プログラム構築ケンブリッジ大学出版局。p。18. ISBN 978-0-521-31883-9
  2. ^ Wikander、1月; Svensson、Bertil(1998年5月31日)。メカトロニクスアプリケーションのリアルタイムシステムシュプリンガーサイエンス&ビジネスメディア。p。101. ISBN 978-0-7923-8159-4
  3. ^ a b Khurana、Rohit。データとファイルの構造(GTU用)、第2版ビカス出版社。p。2. ISBN 978-93-259-6005-3
  4. ^ Chun、Wesley(2001)。コアPythonプログラミングプレンティスホールプロフェッショナル。p。77. ISBN 978-0-13-026036-9
  5. ^ オルセン、ガイア; アリソン、デイモン; Speer、James(2008年1月1日)。Visual Basic .NETクラスデザインハンドブック:効果的なクラスのコーディング押してください。p。80. ISBN 978-1-4302-0780-1
  6. ^ リンドホルム、ティム; イェリン、フランク; ブラチャ、ギラッド; Buckley、Alex(2015年2月13日)。「第2章Java仮想マシンの構造」。Java®仮想マシン仕様
  7. ^ Cowell、ジョン(1997年2月18日)。Essential Java Fast:インターネット用のオブジェクト指向ソフトウェアを作成する方法シュプリンガーサイエンス&ビジネスメディア。p。27. ISBN 978-3-540-76052-8
  8. ^ Rakshit、Sandip; Panigrahi、Goutam(1995年12月)。Javaを使用したオブジェクト指向プログラミングのハンドブックS.チャンドパブリッシング。p。11. ISBN 978-81-219-3001-7
  9. ^ a b 霧、アグナー。「C ++でのソフトウェアの最適化」(PDF)p。29 2022年1月28日取得ほとんどの場合、整数演算は高速です、[...]
  10. ^ 「単一命令単一データ-概要| ScienceDirectトピック」
  11. ^ Kernighan、Brian W。; リッチー、デニスM.(1988)。「2.2データ型とサイズ」。Cプログラミング言語(第2版)。イングルウッドクリフ、ニュージャージー州p。36. ISBN 0131103709
  12. ^ a b フォグ、アグナー(2010-02-16)。「さまざまなC ++コンパイラおよびオペレーティングシステムの呼び出し規約:第3章データ表現」(PDF)2010年8月30日取得
  13. ^ カーニハン、ブライアンW ; リッチー、デニスM(1978)。Cプログラミング言語(第1版)。ニュージャージー州エングルウッドクリフプレンティスホールp。 41ISBN 0-13-110163-3
  14. ^ 「ブール型サポートライブラリ」devdocs.io 2020年10月15日取得
  15. ^ 「C ++のブールデータ型」GeeksforGeeks2017年6月5日2020年10月15日取得
  16. ^ Biron、Paul V。; マルホトラ、アショク。「XMLスキーマパート2:データ型」www.w3.org(第2版)2022年1月29日取得
  17. ^ フィリップス、リーアン(2002年1月18日)。「表記の宣言| XML文書型定義の理解」www.informit.com 2022年1月29日取得
  18. ^ 「プリミティブ-MDNWeb Docs Glossary:Web関連用語の定義」developer.mozilla.orgMDN。
  19. ^ Mansoor、Umer(2016年5月8日)。「Javaのchar型が壊れています」CodeAhoy 2020年2月10日取得
  20. ^ 「文字列・Julia言語」docs.julialang.org 2022年1月29日取得
  21. ^ ((引用web | title = I / Oおよび文字列の説明| access-date = 2922年1月29日| url = http://linasm.sourceforge.net/docs/instructions/cpu.php#bit}}

外部リンク