نوع داده اولیه

از ویکیپدیا، دانشنامه آزاد
پرش به ناوبری پرش به جستجو

در علم کامپیوتر ، انواع داده‌های اولیه مجموعه‌ای از انواع داده‌های پایه هستند که همه انواع داده‌های دیگر از آنها ساخته می‌شوند. [1] به طور خاص اغلب به مجموعه محدودی از نمایش داده ها در استفاده توسط یک پردازنده خاص اشاره دارد که همه برنامه های کامپایل شده باید از آن استفاده کنند. اکثر پردازنده ها از مجموعه مشابهی از انواع داده های اولیه پشتیبانی می کنند، اگرچه نمایش های خاص متفاوت است. [2] به طور کلی تر، "انواع داده اولیه" ممکن است به انواع داده های استاندارد ساخته شده در یک زبان برنامه نویسی اشاره داشته باشد . [3] [4] انواع داده‌ای که ابتدایی نیستند به عنوان انواع داده‌های مشتق‌شده یا ترکیبی نامیده می‌شوند . [3]

انواع اولیه تقریباً همیشه انواع ارزش هستند ، اما انواع ترکیبی نیز ممکن است انواع ارزش باشند. [5]

انواع داده های ابتدایی رایج

مجموعه ای از انواع داده های اولیه ماشین مجازی جاوا عبارتند از: [6]

این انواع اولیه به طور کلی دقیقاً آنهایی هستند که توسط سخت افزار رایانه پشتیبانی می شوند، به جز برای اندازه های صحیح مختلف یا سخت افزارهایی که ممیز شناور ندارند. عملیات روی چنین نمونه های اولیه معمولاً بسیار کارآمد هستند. انواع داده های اولیه که بومی پردازنده هستند، با اشیاء موجود در حافظه رایانه مطابقت یک به یک دارند، و عملیات روی این انواع اغلب در بیشتر موارد سریعترین ممکن است. [9] برای مثال، جمع اعداد صحیح را می توان به عنوان یک دستورالعمل ماشین واحد انجام داد، و برخی دستورالعمل های خاصی را برای پردازش دنباله های کاراکترها با یک دستورالعمل ارائه می دهند. [10] اما انتخاب نوع داده اولیه ممکن است بر عملکرد تأثیر بگذارد، برای مثال با استفاده از SIMD سریعتر استعملیات و انواع داده برای کار بر روی آرایه ای از شناورها. [9] : 113 

مجموعه ای از انواع داده های پایه C مشابه جاوا است. حداقل، چهار نوع،،،، و وجود دارد ، اما charواجد شرایط ،، و به این معنی است که C شامل تعداد زیادی از انواع اعداد صحیح و ممیز شناور اولیه وابسته به هدف است. [11]intfloatdoubleshortlongsignedunsigned

اعداد صحیح

یک نوع داده عدد صحیح محدوده ای از اعداد صحیح ریاضی را نشان می دهد. اعداد صحیح ممکن است علامت دار (با اجازه دادن مقادیر منفی) یا بدون علامت ( فقط اعداد صحیح غیر منفی ) باشند. محدوده های رایج عبارتند از:

اندازه ( بایت ) اندازه ( بیت ) نام ها محدوده امضا شده ( نمایندگی مکمل دو نفر ) محدوده بدون علامت
1 بایت 8 بیت بایت ، اکتت ، حداقل اندازه charدر C99 (به limits.h CHAR_BIT مراجعه کنید) -128 تا +127 0 تا 255
2 بایت 16 بیت کلمه x86 ، حداقل اندازه shortو intدر C 32768- تا 32767+ 0 تا 65535
4 بایت 32 بیت x86 دو کلمه، حداقل اندازه longدر C، اندازه واقعی intبرای اکثر کامپایلرهای مدرن C، [12] اشاره گر برای پردازنده های سازگار با IA-32 −2,147,483,648 تا +2,147,483,647 0 تا 4,294,967,295
8 بایت 64 بیت کلمه چهارگانه x86، حداقل اندازه long longدر C، اندازه واقعی longبرای اکثر کامپایلرهای مدرن C، نشانگر [12] برای پردازنده های سازگار با x86-64 −9,223,372,036,854,775,808 تا +9,223,372,036,854,775,807 0 تا 18,446,744,073,709,551,615

اعداد ممیز شناور

یک عدد ممیز شناور نشان دهنده یک عدد گویا با دقت محدود است که ممکن است یک قسمت کسری داشته باشد. این اعداد در داخل در قالبی معادل نماد علمی ذخیره می شوند ، معمولاً به صورت دودویی اما گاهی اوقات به صورت اعشاری . از آنجایی که اعداد ممیز شناور دقت محدودی دارند، تنها زیرمجموعه ای از اعداد واقعی یا گویا دقیقاً قابل نمایش هستند. اعداد دیگر را می توان فقط تقریباً نشان داد. بسیاری از زبان‌ها هم دارای یک دقت واحد (که اغلب به آن «شناور» می‌گویند) و هم از نوع دقت دوگانه (اغلب «دوگانه» نامیده می‌شود) دارند.

Booleans

یک نوع بولی که معمولاً به آن "bool" یا "boolean" نشان داده می شود، معمولاً یک نوع منطقی است که می تواند مقدار "true" یا مقدار "false" را داشته باشد. اگرچه تنها یک بیت برای تطبیق مجموعه مقادیر "true" و "false" لازم است، زبان های برنامه نویسی معمولاً انواع Boolean را به صورت یک یا چند بایت پیاده سازی می کنند.

بسیاری از زبان ها (به عنوان مثال جاوا ، پاسکال و آدا ) بولین ها را با پایبندی به مفهوم بولی به عنوان یک نوع منطقی متمایز پیاده سازی می کنند. با این حال، برخی از زبان‌ها ممکن است به‌طور ضمنی Booleans را به انواع عددی تبدیل کنند تا معنایی گسترده‌تر به بولی‌ها و عبارات بولی بدهند یا برای دستیابی به سازگاری با نسخه‌های قبلی زبان. به عنوان مثال، نسخه های اولیه زبان برنامه نویسی C که از ANSI C و استانداردهای قبلی آن پیروی می کردند، نوع بولی اختصاصی نداشتند. در عوض، مقادیر عددی صفر به عنوان "نادرست" و هر مقدار دیگر به عنوان "درست" تفسیر می شود. [13] C99 جدیدتریک نوع بولی متمایز اضافه کرد که می‌توان آن را با stdbool.h ، [14] و C++ به‌عنوان boolیک نوع داخلی و «true» و «false» به‌عنوان کلمات رزرو شده اضافه کرد. [15]

طرحواره XML

زبان XML Schema Definition مجموعه ای از 19 نوع داده اولیه را ارائه می دهد: [16]

انواع داخلی

در جاوا اسکریپت، 7 نوع داده اولیه وجود دارد: رشته، عدد، بیگینت، بولی، تعریف نشده، نماد و تهی. اینها اشیا نیستند و روشی ندارند. [18]

انواعی که می توانند در زبان های برنامه نویسی پیچیده تعبیه شوند عبارتند از:

کاراکترها و رشته ها

نوع کاراکتر نوعی است که می تواند همه کاراکترهای یونیکد را نشان دهد ، بنابراین باید حداقل 21 بیت عرض داشته باشد. C شامل یک charنوع است، اما به عنوان کوچکترین واحد آدرس پذیر حافظه تعریف می شود که چندین استاندارد مانند POSIX نیاز دارند که 8 بیت باشد . از این رو برای نمایش تمام کاراکترهای یونیکد بسیار کوچک است و در عوض استانداردها معمولاً به آن به عنوان یک نوع عدد صحیح اشاره می کنند. اصطلاح "char" همچنین برای یک نوع عدد صحیح 16 بیتی در جاوا استفاده می شود ، اما دوباره این یک نوع کاراکتر نیست. [19] برخی از زبان‌ها مانند جولیا یک نوع کاراکتر یونیکد واقعی 32 بیتی را به‌عنوان ابتدایی شامل می‌شوند. [20]

زبان‌های دیگر مانند جاوا اسکریپت ، پایتون ، روبی ، و بسیاری از گویش‌های بیسیک نوع کاراکتر اولیه ندارند، اما در عوض، رشته‌ها را به عنوان یک نوع داده اولیه، معمولاً با استفاده از رمزگذاری UTF-8، اضافه می‌کنند. رشته هایی با طول یک معمولاً برای نمایش کاراکترهای منفرد استفاده می شوند.

برخی از سخت‌افزارهای رایانه دارای دستورالعمل‌هایی هستند که می‌توانند هنگام کار با رشته‌ها به شما کمک کنند. برای مثال، x86-64 می‌تواند دنباله‌ای از آیتم‌ها را جابجا، تنظیم، جستجو یا مقایسه کند، جایی که یک آیتم می‌تواند 1، 2، 4 یا 8 بایت باشد. [21]

محدوده

یک نوع داده عددی محدوده دارای حداکثر و حداقل مقدار خود در نوع تعبیه شده است. در برخی از زبان ها مانند آدا و پاسکال گنجانده شده است . تلاش برای ذخیره یک عدد خارج از محدوده ممکن است منجر به خطاهای کامپایلر/زمان اجرا یا محاسبات نادرست (به دلیل برش ) بسته به زبان مورد استفاده شود. در عمل کامپایلر مناسب ترین عدد صحیح اولیه یا نوع ممیز شناور را بطور خودکار انتخاب می کند.

همچنین مشاهده کنید

منابع

  1. ^ سنگ، RG; کوک، دی جی (5 فوریه 1987). ساخت برنامه . انتشارات دانشگاه کمبریج. پ. 18. شابک 978-0-521-31883-9.
  2. ^ ویکاندر، جان؛ Svensson، Bertil (31 مه 1998). سیستم های بلادرنگ در برنامه های مکاترونیک . Springer Science & Business Media. پ. 101. شابک 978-0-7923-8159-4.
  3. ^ آ ب خورانا ، روهیت. داده ها و ساختار فایل (برای GTU)، ویرایش دوم . انتشارات ویکاس. پ. 2. ISBN 978-93-259-6005-3.
  4. چون، وسلی (2001). برنامه نویسی هسته پایتون . پرنتیس هال حرفه ای. پ. 77. شابک 978-0-13-026036-9.
  5. ^ اولسن، گیر؛ آلیسون، دیمون؛ اسپیر، جیمز (1 ژانویه 2008). کتابچه راهنمای طراحی کلاس دات نت ویژوال بیسیک: کلاس های موثر کدنویسی . Apress. پ. 80. شابک 978-1-4302-0780-1.
  6. ^ لیندهولم، تیم؛ یلین، فرانک؛ براچا، گیلاد; باکلی، الکس (13 فوریه 2015). "فصل 2. ساختار ماشین مجازی جاوا". مشخصات ماشین مجازی Java® .
  7. کاول، جان (18 فوریه 1997). Essential Java Fast: نحوه نوشتن نرم افزار شی گرا برای اینترنت . Springer Science & Business Media. پ. 27. شابک 978-3-540-76052-8.
  8. ^ راکشیت، سندیپ؛ پانی گراهی، گوتام (دی 1374). کتاب دستی برنامه نویسی شی گرا با جاوا . انتشارات S. Chand. پ. 11. شابک 978-81-219-3001-7.
  9. ^ a b مه، اگنر. "بهینه سازی نرم افزار در C++" (PDF) . پ. 29 . بازبینی شده در 28 ژانویه 2022 . عملیات اعداد صحیح در بیشتر موارد سریع هستند، [...]
  10. «داده تک دستورالعمل واحد - یک مرور کلی | موضوعات ScienceDirect» .
  11. کرنیگان، برایان دبلیو. ریچی، دنیس ام (1988). "2.2 انواع داده ها و اندازه ها". زبان برنامه نویسی C (ویرایش دوم). Englewood Cliffs, NJ p. 36. شابک 0131103709.
  12. ^ a b Fog، Agner (2010-02-16). فراخوانی کنوانسیون‌ها برای کامپایلرها و سیستم‌های عامل C++ مختلف: فصل 3، نمایش داده‌ها (PDF) . بازیابی شده در 2010-08-30 .
  13. کرنیگان، برایان دبلیو ؛ ریچی، دنیس ام (1978). زبان برنامه نویسی C (ویرایش اول). Englewood Cliffs، NJ : Prentice Hall . پ. 41 . شابک 0-13-110163-3.
  14. ^ "کتابخانه پشتیبانی نوع بولی" . devdocs.io _ بازبینی شده در 15 اکتبر 2020 .
  15. ^ "Bool type data in C++" . GeeksforGeeks . 5 ژوئن 2017 . بازبینی شده در 15 اکتبر 2020 .
  16. ^ بیرون، پل وی. مالهوترا، آشوک. "شما XML قسمت 2: انواع داده" . www.w3.org (ویرایش دوم) . بازبینی شده در 29 ژانویه 2022 .
  17. فیلیپس، لی آن (18 ژانویه 2002). "اعلام یک NOTATION | درک تعاریف نوع سند XML" . www.informit.com . بازبینی شده در 29 ژانویه 2022 .
  18. «اصلی - واژه نامه اسناد وب MDN: تعاریف اصطلاحات مرتبط با وب» . developer.mozilla.org . MDN.
  19. منصور، عمر (۸ مه ۲۰۱۶). "نوع کاراکتر در جاوا شکسته است" . CodeAhoy . بازیابی شده در 10 فوریه 2020 .
  20. «Strings · The Julia Language» . docs.julialang.org . بازبینی شده در 29 ژانویه 2022 .
  21. ^ ((نقل به وب|title=I/O and string دستورالعمل|access-date=29 ژانویه 2022|url= http://linasm.sourceforge.net/docs/instructions/cpu.php#bit}}

پیوندهای خارجی