نوع داده long در آردوینو — آموزش ذخیره اعداد بزرگ بدون سرریز  
آردوینو ایران | آموزش تخصصی آردوینو به فارسی

آردوینو ایران | آموزش تخصصی آردوینو به فارسی

آردوینو ایران — مرجع تخصصی آموزش آردوینو به فارسی! دوره‌های کاربردی، پروژه‌محور و گام‌به‌گام برای مبتدی‌ها تا پیشرفته‌ها: از راه‌اندازی اولین LED تا ساخت ربات، IoT و سیستم‌های هوشمند خانه. یادگیری عملی، کدنویسی ساده، پشتیبانی فنی و دسترسی مادام‌العمر به محتوا — فقط برای عاشقان الکترونیک و برنامه‌نویسی سخت‌افزاری.

اشتراک در خبرنامه

جهت عضویت در خبرنامه لطفا ایمیل خود را ثبت نمائید

Captcha

آمار بازدید

  • بازدید امروز : 8
  • بازدید دیروز : 41
  • بازدید کل : 14802

نوع داده long در آردوینو — آموزش ذخیره اعداد بزرگ بدون سرریز


نوع داده long در آردوینو — آموزش ذخیره اعداد بزرگ بدون سرریز

نوع داده long در آردوینو — ذخیره‌ی اعداد بزرگ بدون نگرانی از سرریز

long چیست؟

در آردوینو، نوع داده‌ی long برای ذخیره‌ی اعداد صحیح بسیار بزرگ (مثبت یا منفی) استفاده می‌شود.
این نوع داده در تمام برد‌های رایج آردوینو (از جمله Uno، Nano، Mega، ESP32 و Due) دقیقاً ۴ بایت (۳۲ بیت) حافظه مصرف می‌کند.

محدوده‌ی مقادیر قابل ذخیره در یک متغیر long:

−۲,۱۴۷,۴۸۳,۶۴۸ تا +۲,۱۴۷,۴۸۳,۶۴۷

این محدوده تقریباً ۶۵ هزار برابر بزرگ‌تر از محدوده‌ی int در آردوینو Uno است — پس برای کارهایی که نیاز به اعداد بزرگ دارند، گزینه‌ی ایده‌آلی است.

چرا به long نیاز داریم؟

در بسیاری از پروژه‌ها، اعدادی که استفاده می‌کنیم از محدوده‌ی int (در AVR) فراتر می‌روند. مثال‌های رایج:

  • زمان سیستم: تابع millis() تعداد میلی‌ثانیه‌های گذشته از روشن شدن آردوینو را برمی‌گرداند. این عدد پس از حدود ۹ ساعت از محدوده‌ی int خارج می‌شود!
  • مختصات GPS: طول و عرض جغرافیایی اغلب به صورت اعداد بزرگ با دقت بالا ذخیره می‌شوند.
  • شمارش رویدادهای زیاد: مثلاً تعداد ضربان قلب در یک روز یا تعداد دور موتور در یک ساعت.

نحوه تعریف و استفاده

long currentTime = millis();        // زمان فعلی سیستم
long latitude = 356892345;         // مختصات جغرافیایی (به صورت fixed-point)
long counter = 0;                  // شمارنده‌ی بزرگ

⚠️ نکته: برای تعریف یک عدد ثابت به عنوان long، بهتر است پسوند L یا l به آن اضافه کنید (ترجیحاً L بزرگ، چون l کوچک شبیه عدد ۱ است):

long bigNumber = 1000000L;  // مشخص می‌کند که این عدد long است

مثال کاربردی: نمایش زمان سپری‌شده بدون سرریز

تابع millis() خروجی unsigned long دارد. اگر آن را در یک int ذخیره کنید، پس از ۳۲ ثانیه سرریز می‌شود! اما با long (یا بهتر است unsigned long) مشکلی پیش نمی‌آید:

unsigned long startTime = millis();

void setup() {
  Serial.begin(9600);
}

void loop() {
  unsigned long currentTime = millis();
  unsigned long elapsedTime = currentTime - startTime;
  
  Serial.print("زمان سپری‌شده: ");
  Serial.print(elapsedTime / 1000);  // تبدیل به ثانیه
  Serial.println(" ثانیه");
  
  delay(1000);
}

نکته طلایی ۱: long و unsigned long — کدام را انتخاب کنیم؟

اگر عدد شما هرگز منفی نمی‌شود (مثل زمان، شمارنده، ولتاژ)، از unsigned long استفاده کنید:
long: −۲,۱۴۷,۴۸۳,۶۴۸ تا +۲,۱۴۷,۴۸۳,۶۴۷
unsigned long: ۰ تا ۴,۲۹۴,۹۶۷,۲۹۵

یعنی با unsigned long، محدوده‌ی مثبت شما دو برابر می‌شود!
اما اگر حتی یک‌بار نیاز به عدد منفی دارید، حتماً از long استفاده کنید.

نکته طلایی ۲: long همیشه ۴ بایت است — برخلاف int!

در حالی که اندازه‌ی int بسته به برد تغییر می‌کند، long در تمام پلتفرم‌های آردوینو همیشه ۴ بایت است.
این ویژگی باعث می‌شود کدهای شما قابل انتقال‌تر (portable) باشند.
اگر به اطمینان نیاز دارید که متغیر شما ۴ بایت است، long گزینه‌ی ایمن‌تری نسبت به int است.

تفاوت long با int و byte در یک نگاه

نوع دادهاندازه (بایت)محدوده (در AVR)
byte 1 0 تا 255
int 2 −32,768 تا +32,767
long 4 −2,147,483,648 تا +2,147,483,647

منبع رسمی

این مطلب بر اساس مستندات رسمی Arduino از بخش long – Language Reference تهیه شده است، با توضیحات ساده‌شده، مثال‌های کاربردی و نکات طلایی منحصربه‌فرد برای جامعه فارسی‌زبان.

  انتشار : ۱۲ مهر ۱۴۰۴               تعداد بازدید : 303

برچسب های مهم

دیدگاه های کاربران (0)

http://kia-ir.ir

تمام حقوق مادی و معنوی این وب سایت متعلق به "آردوینو ایران | آموزش تخصصی آردوینو به فارسی" می باشد

فید خبر خوان    نقشه سایت    تماس با ما