اولین بار است که به این وب‌سایت می‌آیید. راهنما را مطالعه کنید!
x
موسسه خیریه محک

شهر ریاضی بازی-ریاضی

تفاوت نوع داده‌های int8_t و int_least8_t و int_fast8_t چیه؟

+1 امتیاز
416 نمایش
هیچ پژوهش انسانی نمی‌تواند ادعای علمی بودن داشته باشد، مگر این‌که از برهان ریاضی برخوردار باشد (لئوناردو داوینچی)
پرسیده شده یکشنبه ۴ فروردین ۱۳۹۲ در C++ توسط prodo  
بازتگ شده یکشنبه ۴ فروردین ۱۳۹۲ توسط CPP_Crawler4

1 پاسخ

0 امتیاز

int8_t داده‌ای هست که دقیقاً ۸ بیت حافظه می‌گیره. (دقت کنید ۸ بیت نه یک بایت). این داده برای استفاده‌هایی پیاده شده که دقیقاً می‌خوان مطمئن باشن که ۸ بیت داده دارن. با کاراکتر، int، byte و این‌ها نمی‌شه این کار و کرد. چون مبنای حافظه‌گیری این‌ها بر مبنای بایت هست و بایت هم معلوم نیست حتماً ۸ بیت باشه.
مشکل این نوع داده اینه که در سیستم‌هایی امکان داره موجود نباشه. مثلاً در سیستم‌های با ببایت ۹ بیتی.
int_least8_t نوع داده‌ای هست که کوچک‌ترین عدد صحیح ممکن که حداقل ۸ بیت باشه رو انتخاب می‌کنه. با توجه به این که char یک بایت هست در بیشتر سیستم‌هایی که C++ قابل پیاده‌سازی هست این داده برابر char خواهد بود.
int_fast8_t پرسرعت‌ترین داده‌ی صحیح از نظر کارایی هست که حداقل ۸ بیت داره. از این نظر که حداقل ۸ بیت داره با nit_least8_t برابره اما یه تفاوتی داره.
فرض کنیم در سیستمی هستیم که ۳۲ بیتی با بایت ۸ بیتی هست. در این حالت int_least8_t دقیقاً برابر char است. اما int_fast8_t برابر int هست. چون در پردازنده‌ی ۳۲ بیتی یک int با ۳۲ بیت از هر داده‌ی صحیح دیگه‌ای سریع‌تره.

هیچ پژوهش انسانی نمی‌تواند ادعای علمی بودن داشته باشد، مگر این‌که از برهان ریاضی برخوردار باشد (لئوناردو داوینچی)
پاسخ داده شده شنبه ۳۱ فروردین ۱۳۹۲ توسط prodo