نوع داده unsigned int در آردوینو — آموزش کامل برای مبتدی‌ها  
آردوینو ایران | آموزش تخصصی آردوینو به فارسی

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

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

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

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

Captcha

آمار بازدید

  • بازدید امروز : 41
  • بازدید دیروز : 99
  • بازدید کل : 14794

نوع داده unsigned int در آردوینو — آموزش کامل برای مبتدی‌ها


نوع داده unsigned int در آردوینو — آموزش کامل برای مبتدی‌ها

نوع داده unsigned int در آردوینو — ذخیره‌ی اعداد مثبت بزرگ بدون نگرانی از علامت

unsigned int چیست؟

در آردوینو، نوع داده‌ی unsigned int یک نوع عدد صحیح است که فقط می‌تواند اعداد مثبت یا صفر را ذخیره کند — هیچ‌وقت نمی‌تواند عدد منفی باشد.
این نوع داده در برد‌های مختلف آردوینو اندازه‌ی متفاوتی دارد:

  • در برد‌های مبتنی بر AVR (مثل Arduino Uno، Nano، Mega): ۲ بایت → محدوده: ۰ تا ۶۵,۵۳۵
  • در برد‌های مبتنی بر ARM یا ESP (مثل Arduino Due، ESP32): ۴ بایت → محدوده: ۰ تا ۴,۲۹۴,۹۶۷,۲۹۵

تفاوت اصلی آن با int این است که unsigned int فضای علامت (sign bit) را برای ذخیره‌ی مقدار عددی استفاده می‌کند — پس محدوده‌ی مثبت آن دو برابر بزرگ‌تر از int است.

توضیح برای مبتدی‌ها: فرض کنید یک عدد ۲ بایتی دارید. در int، یکی از بیت‌ها فقط برای تشخیص «مثبت یا منفی» استفاده می‌شود، پس فقط ۱۵ بیت برای عدد باقی می‌ماند. اما در unsigned int، همه‌ی ۱۶ بیت برای عدد استفاده می‌شود — پس می‌توانید اعداد بزرگ‌تری ذخیره کنید، اما هیچ‌وقت نمی‌توانید عدد منفی داشته باشید.

چرا از unsigned int استفاده کنیم؟

از unsigned int زمانی استفاده می‌شود که: — مطمئن هستید عدد شما هرگز منفی نخواهد شد (مثل تعداد دور موتور، زمان سپری‌شده، مقدار سنسور)
— نیاز به محدوده‌ی بزرگ‌تری نسبت به int دارید (مثلاً در Uno، تا ۶۵ هزار به جای ۳۲ هزار)
— می‌خواهید منظور خود را به‌وضوح در کد نشان دهید: «این عدد همیشه مثبت است».

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

unsigned int counter = 0;
unsigned int sensorValue = 1023;  // حداکثر مقدار آنالوگ در آردوینو
unsigned int elapsedTime = 50000; // میلی‌ثانیه — بیشتر از محدوده int در Uno

مثال کاربردی: شمارش رویدادهای زیاد در طول زمان

فرض کنید می‌خواهید تعداد بارهایی که یک سنسور فعال می‌شود را در یک روز بشمارید. این عدد ممکن است از ۳۲,۷۶۷ بیشتر شود — پس از unsigned int استفاده می‌کنیم:

unsigned int activationCount = 0;

void loop() {
  if (digitalRead(sensorPin) == HIGH) {
    activationCount++;  // می‌تواند تا 65535 برسد (در Uno)
    delay(100); // جلوگیری از نوسان
  }
}

تفاوت unsigned int با int و long

نوع دادهاندازه (Uno)محدوده (Uno)
int 2 بایت −32,768 تا +32,767
unsigned int 2 بایت 0 تا 65,535
long 4 بایت −2,147,483,648 تا +2,147,483,647

توضیح برای مبتدی‌ها: اگر عدد شما همیشه مثبت است و در Uno از ۳۲ هزار بیشتر می‌شود، اما از ۶۵ هزار کمتر است، unsigned int گزینه‌ی ایده‌آلی است. اگر از ۶۵ هزار هم بیشتر شد، باید از long یا unsigned long استفاده کنید.

نکته طلایی ۱: از unsigned int در حلقه‌های شمارشی با احتیاط استفاده کنید!

اگر یک متغیر unsigned int را کم کنید و به صفر برسد، دوباره به بزرگ‌ترین مقدار خود برمی‌گردد (سرریز معکوس):

unsigned int x = 0;
x = x - 1;  // حالا x = 65535! (در Uno)

بنابراین، در حلقه‌هایی مثل for (unsigned int i = 10; i >= 0; i--)، شرط i >= 0 همیشه true است — چون unsigned int هرگز منفی نمی‌شود! این یکی از رایج‌ترین باگ‌های مبتدی‌هاست.

نکته طلایی ۲: در ESP32 و Due، unsigned int 4 بایت است — پس کد شما ممکن است رفتار متفاوتی داشته باشد!

اگر کد شما را روی Uno می‌نویسید و بعد روی ESP32 اجرا می‌کنید، ممکن است متوجه نشوید که unsigned int در ESP32 ۴ بایت است. این می‌تواند باعث مشکلات ظریفی در حافظه یا محاسبات شود.
اگر به اندازه‌ی دقیق نیاز دارید، بهتر است از انواع ثابت‌الاندازه مثل uint16_t یا uint32_t استفاده کنید.

جمع‌بندی

  • unsigned int فقط اعداد ≥ ۰ را ذخیره می‌کند
  • در Uno: ۰ تا ۶۵,۵۳۵ — دو برابر محدوده‌ی مثبت int
  • برای شمارنده‌ها، زمان‌ها و مقادیر سنسور که همیشه مثبت هستند مناسب است
  • در حلقه‌های کاهشی با احتیاط استفاده شود
  • در برد‌های مختلف، اندازه‌ی متفاوتی دارد — برای کدهای قابل انتقال، احتیاط کنید

منبع رسمی

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

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

برچسب های مهم

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

http://kia-ir.ir

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

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