java, جاوا, حل مسائل با جاوا, ساختمان داده در جاوا

تبدیل اعداد هگزادسیمال به دهدهی در جاوا

تبدیل اعداد هگزادسیمال به دهدهی در جاوا

در این جلسه تیم کدگیت را با آموزش تبدیل اعداد هگزادسیمال به دهدهی در جاوا همراهی کنید. پیش نیاز این آموزش شامل موارد زیر است:

  1. آشنایی با حلقه for
  2. آشنایی با متد

هگزادسیمال چیست؟

هگزادسیمال (Hexadecimal) که به اختصار هگز (Hex) نیز نامیده می‌شود، یک سامانه عدد نویسی است که بر مبنای ۱۶ بوده و برای نمایش دادن آن از ۱۶ سمبل استفاده می‌شود. اعداد ۰ تا ۹ به صورت عادی (یعنی همان اعداد ۰ تا ۹) و اعداد ۱۰ تا ۱۵ را با حروف A(ده) و B(یازده) و C(دوازده) و D(سیزده) و E(چهارده) و F(پانزده) نشان می‌دهند.

برخی از کاربران در ابتدا در ۱۶هی بودن این سیستم شک می‌کنند، چون ما از عدد ۰ استفاده می‌کنیم تا ۱۵، درواقع ما ۱۶ عدد برای انتخاب کردن خواهیم داشت مثل ۱۰هی بودن اعداد عادی که از ۰ شروع می‌شوند تا ۹.

اکثر اعدادی که روزانه از آن‌ها استفاده می‌کنیم، بر پایه ۱۰ هستند یعنی ۱۰ کاراکتر برای نشان دادنشان کافی است، از اعداد ۰ تا ۹ اسم این سیستم دسیمال است. ولی همانطور که گفته شد، در سیستم عددنویسی هگز، ما از ۱۶ کاراکتر استفاده می‌کنیم.

نکته: هگز یا همان هگزادسیمال نباید با دسیمال اشتباه گرفته شود. این دو سیستم کاملاً جدا هستند. دسیمال به معنای ۱۰ و هگز به معنای ۶ است در نتیجه هگزادسیمال میشه ۱۶.

سیستم هگزادسیمال در رشته‌های کامپیوتر و ریاضی کاربردهای فراوانی دارد. از برنامه نویسی سطح پایین گرفته تا کد رنگ صفحات HTML تا دیباگ کردن برنامه‌ها. اما نحوه نمایش هگز در سیستم‌های مختلف متفاوت است.

مثلاً در سیستم‌های یونیکس و شبه یونیکس (و بسیاری از سیستم‌های دیگر) دو کاراکتر ۰x  در اول مقدار هگز نشان داده می‌شود (مثلاً ۰xAA یا ۰x2F4) در برخی از سیستم‌ها و صفحات HTML کدهای رنگ بصورت ترکیبی از کاراکترهای هگز نشان داده می‌شود که در اول آن‌ها # قرار می‌گیرد (مثلاً #FFFFFF – #  قبل از FFFFFF است). در زبان اسمبلی پردازنده‌های اینتل، پس از مقادیر هگز یا h یا H قرار داده می‌شود (مثلاً 2h یا  A6H) و …( bytegate.ir)

تبدیل اعداد هگزادسیمال به دهدهی

برای تبدیل هگزادسیمال به دهدهی باید مراحل زیر را انجام دهید:

  1. عدد هگزادسیمال را بگیرید.
  2. هر عدد را در 16 به توان خانه ای که در آن است ضرب کنید.
  3. تمام حاصلضرب ها را با هم جمع کنید.

عدد 12eb را در نظر بگیرید. عدد b معادل 11 است و در خانه صفر قرار دارد پس حاصل میشود

11*160

عدد e میشود معادل 14 است و در خانه 1 قرار دارد پس حاصل میشود

14*161

به طور کلی حاصل به صورت زیر میشود:

12eb = 11*160 + 14*161 + 2 * 162+ 1*163 = 4843

تبدیل اعداد هگزادسیمال به دهدهی در جاوا

برای تبدیل اعداد هگزادسیمال به دهدهی در جاوا ما یک متد به نام hex2decimal مینویسیم که یک string ورودی میگیرد و خروجی int برمیگرداند. کد تبدیل اعداد هگزادسیمال به دهدهی در جاوا به صورت زیر است:

public static int hex2decimal(String s) {
          String digits = "0123456789ABCDEF";
          s = s.toUpperCase();
          int val = 0;
          for (int i = s.length()-1 , j = 0; i >= 0; i--,j++) {
              char c = s.charAt(i);

              int d = digits.indexOf(c);
              val += Math.pow(16, j) * d;

          }

          return val;
     }

همانطور که در کد تبدیل اعداد هگزادسیمال به دهدهی در جاوا میبینید متغیری به نام digits تعریف کردیم و کاره این متغیر این است که معادل دهدهی یک عدد هگزادسیمال را به ما بدهد.(مثلا به جای a به ما 10 بدهد).سپس یک for نوشتیم به طول عدد هگزادسیمال خودمان و در آخر تمام حاصلضرب ها را با هم جمع میکنیم و در خروجی برمیگردانیم.

دلیل تعریف دو متغیر در for این است که رشته ورودی از چپ خوانده میشود ولی اعداد از راست!! به همین دلیل متغیر i اشاره به اول عدد هگزادسیمال و متغیر j اشاره به خانه واقعی آن هر عدد دارد.

تست تبدیل اعداد هگزادسیمال به دهدهی در جاوا

برای تست کدهای بالا، کد main زیر را بنویسید:

 public static void main(String[] args) {
          System.out.println(hex2decimal("12eb"));
     }

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *