ماشینحساب تبدیل مبنا
تبدیل یک عدد صحیح به باینری، اکتال، دسیمال و هگزادسیمال.
نحوه استفاده از این ماشینحساب تبدیل مبنا
- عدد صحیح را وارد کنید
یک عدد صحیح غیرمنفی در فیلد «عدد صحیح» وارد کنید (مثلاً 255 یا 4096).
- مشاهده مقدار باینری
نتیجه مقدار باینری، نمایش در مبنای 2 را نشان میدهد.
- بررسی اکتال و هگز
نتایج اکتال و هگزادسیمال را برای نمایشهای فشرده بررسی کنید.
- تایید دهدهی
خروجی دهدهی مقدار اصلی را برای بررسی مجدد تایید میکند.
نحوه عملکرد این ماشینحساب تبدیل مبنا
این ماشینحساب تبدیل مبنا، یک عدد صحیح در مبنای ۱۰ (دهدهی) را دریافت کرده و آن را در مبناهای ۲ (دودویی)، ۸ (هشتهشتی) و ۱۶ (شانزدهشانزدهی) نمایش میدهد؛ اینها چهار سیستم عددی پرکاربرد در محاسبات هستند. هر سیستم عددی مکانی به یک شکل عمل میکند: هر جایگاه رقم نشاندهنده توان متوالی از مبنا است و مقدار عدد، مجموع هر رقم ضرب در وزن جایگاهی آن است. تبدیل بین مبناها یک عملیات اساسی در برنامهنویسی سطح پایین، طراحی منطق دیجیتال، مهندسی شبکه (آدرسهای MAC و IPv6)، کدهای رنگ در CSS، ماسکهای مجوز فایل در Unix و بررسی آدرس حافظه هنگام عیبیابی است.
تقسیم متوالی: N را بر مبنای هدف R تقسیم کنید، باقیمانده را یادداشت کنید، این کار را با خارجقسمت تکرار کنید تا به صفر برسد، سپس باقیماندهها را به ترتیب معکوس بخوانید. تبدیل عدد دهدهی ۲۵۵ به دودویی، هشتهشتی و شانزدهشانزدهی. برای دودویی (R = ۲): ۲۵۵ ÷ ۲ = ۱۲۷ با باقیمانده ۱، ۱۲۷ ÷ ۲ = ۶۳ با باقیمانده ۱، ۶۳ ÷ ۲ = ۳۱ با باقیمانده ۱، ۳۱ ÷ ۲ = ۱۵ با باقیمانده ۱، ۱۵ ÷ ۲ = ۷ با باقیمانده ۱، ۷ ÷ ۲ = ۳ با باقیمانده ۱، ۳ ÷ ۲ = ۱ با باقیمانده ۱، ۱ ÷ ۲ = ۰ با باقیمانده ۱. خواندن باقیماندهها از پایین به بالا: ۱۱۱۱۱۱۱۱. برای هشتهشتی (R = ۸): ۲۵۵ ÷ ۸ = ۳۱ با باقیمانده ۷، ۳۱ ÷ ۸ = ۳ با باقیمانده ۷، ۳ ÷ ۸ = ۰ با باقیمانده ۳ ← ۳۷۷. برای شانزدهشانزدهی (R = ۱۶): ۲۵۵ ÷ ۱۶ = ۱۵ با باقیمانده ۱۵ (F)، ۱۵ ÷ ۱۶ = ۰ با باقیمانده ۱۵ (F) ← FF.
دهدهی 4096 ← باینری 1000000000000، اکتال 10000، هگز 1000. مفید برای درک اینکه 4 KiB = 4096 بایت.
دهدهی 15 ← باینری 1111، اکتال 17، هگز F. هر رقم هگز دقیقاً با چهار بیت مطابقت دارد؛ F = 1111.
- ✓ ورودی یک عدد صحیح غیرمنفی (صفر یا عدد صحیح مثبت) است. مقادیر کسری و اعداد منفی به الگوریتمهای گستردهتری (مانند مکمل دو برای باینری علامتدار) نیاز دارند که خارج از محدوده این ابزار است.
- ✓ ارقام شانزدهشانزدهی بزرگتر از ۹ با استفاده از حروف بزرگ A–F نمایش داده میشوند، که مطابق با قرارداد اکثر زبانهای برنامهنویسی، RFCها و مستندات سختافزاری است.
- ✓ صفرهای ابتدایی از خروجی حذف میشوند. برای نمایشهای با عرض ثابت (مانند باینری ۸ بیتی یا ۳۲ بیتی)، نتیجه را به صورت دستی به عرض مورد نظر برسانید.
- ✓ این ماشینحساب فقط اعداد صحیح غیرمنفی را میپذیرد. مقادیر بالاتر از ۲^۵۳ − ۱ (Number.MAX_SAFE_INTEGER در جاوااسکریپت) پذیرفته نمیشوند تا ارقام نمایش داده شده دقیق باقی بمانند.
- هر رقم شانزدهشانزدهی دقیقاً به چهار رقم دودویی (بیت) و هر رقم هشتهشتی دقیقاً به سه بیت نگاشت میشود. این رابطه باعث میشود که پس از حفظ کردن ۱۶ الگوی نیبل، تبدیل ذهنی بین هگز، اکتال و باینری سریع انجام شود.
- مقادیر رایجی که ارزش حفظ کردن دارند: 0xFF = ۲۵۵، 0x100 = ۲۵۶، 0xFFFF = ۶۵۵۳۵، 0xFFFFFFFF = ۴,۲۹۴,۹۶۷,۲۹۵ (حداکثر عدد صحیح ۳۲ بیتی بدون علامت).
- مجوزهای فایل یونیکس از مبنای هشت استفاده میکنند: 755 به معنای rwxr-xr-x است (خواندن/نوشتن/اجرا برای مالک، خواندن/اجرا برای گروه و دیگران). هر رقم در مبنای هشت، سه بیت مجوز را کدگذاری میکند.
- کدهای رنگ هگز در CSS سه مقدار بایت هگزادسیمال متوالی هستند که کانالهای قرمز، سبز و آبی را نشان میدهند — برای مثال، #FF8800 یعنی 255 قرمز، 136 سبز و 0 آبی.
- نظریه سیستمهای عددنویسی موضعی — Knuth, D. E., The Art of Computer Programming, Volume 2: Seminumerical Algorithms, Section 4.1
- IEEE 754-2019 — استاندارد محاسبات ممیز شناور (در زمینه نمایش اعداد صحیح)
- RFC 4291 — IP Version 6 Addressing Architecture (نمادگذاری هگزادسیمال برای IPv6)
درک سیستمهای عددی در محاسبات
هر سیستم عددنویسی جایگاهی از یک مبنا (رادیکس) استفاده میکند و به هر رقم بر اساس موقعیتش وزنی اختصاص میدهد. در سیستم دهدهی (مبنای 10)، راستترین رقم یکان، بعدی دهگان و سپس صدگان است. باینری (مبنای 2) فقط از 0 و 1 استفاده میکند که مستقیماً با حالتهای روشن/خاموش ترانزیستور مطابقت دارد. اکتال (مبنای 8) سه بیت را در هر رقم گروهبندی میکند و هگزادسیمال (مبنای 16) چهار بیت را در هر رقم گروهبندی کرده و از A–F برای مقادیر 10–15 استفاده میکند. تبدیل بین مبناها از تقسیم متوالی استفاده میکند: عدد را بر مبنای هدف تقسیم کنید، باقیمانده را یادداشت کنید، این کار را با خارجقسمت تا رسیدن به صفر تکرار کنید و سپس باقیماندهها را به ترتیب معکوس بخوانید. این الگوریتم پایه و اساس تمام تبدیلهای مبنا در برنامهنویسی است.
موارد استفاده کاربردی تبدیل مبنا برای توسعهدهندگان
توسعهدهندگان هنگام بررسی تخلیه حافظه، عیبیابی عملیات بیتی، تفسیر مجوزهای فایل و کار با کدهای رنگ از تبدیل مبنا استفاده میکنند. مجوزهای فایل Unix (مانند 755) اکتال هستند: هر رقم کدهای خواندن/نوشتن/اجرا را برای مالک، گروه و دیگران رمزگذاری میکند. رنگهای هگز CSS مانند #FF8800 سه بایت متصل به هم در مبنای 16 هستند. آدرسهای IPv6 به صورت هگز نوشته میشوند. ماسکهای بیتی و پرچمها اغلب برای خوانایی بیشتر در قالب هگز بیان میشوند (0xFF برای ماسک یک بایتی، 0xFFFF برای 16 بیت). هنگام عیبیابی کدهای سطح پایین یا پروتکلهای شبکه، تبدیل بین دهدهی، هگز و باینری به سرعت الگوهای بیتی زیربنایی را آشکار میکند.
سوالات متداول ماشینحساب تبدیل مبنا
چرا از مبناهای دو، هشت و شانزده در محاسبات استفاده میشود؟
مبنای دو مستقیماً با حالتهای روشن/خاموش ترانزیستورها مطابقت دارد و زبان بومی سختافزار است. مبناهای هشت و شانزده روشهای کوتاهنویسی فشرده برای مبنای دو هستند — یک رقم هگز دقیقاً چهار بیت و یک رقم در مبنای هشت سه بیت را نشان میدهد — بنابراین برنامهنویسان از آنها برای بیان آدرسها، ماسکهای بیتی و کدهای رنگ بهصورت مختصرتر از رشتههای طولانی باینری استفاده میکنند.
چگونه در جهت دیگر تبدیل انجام دهم (مثلاً هگز به دهدهی)؟
هر رقم را در توان موضعی آن مبنا ضرب کرده و نتایج را با هم جمع کنید. برای مثال، هگز 1A3 = 1×16² + 10×16¹ + 3×16⁰ = 256 + 160 + 3 = 419 در مبنای ده.
برای اعداد بسیار بزرگ چه اتفاقی میافتد؟
این ماشینحساب فقط مقادیر را تا حد مجاز عدد صحیح ایمن در JavaScript میپذیرد: 2^53 − 1 (9,007,199,254,740,991). اعداد بزرگتر پذیرفته نمیشوند زیرا ممکن است ارقام کمارزش خود را در مرورگر از دست بدهند.
آیا میتوانم اعداد منفی یا کسری را تبدیل کنم؟
این ابزار اعداد صحیح غیرمنفی را پردازش میکند. اعداد صحیح منفی در محاسبات معمولاً با استفاده از مکمل دو در یک عرض بیت ثابت نمایش داده میشوند و مقادیر کسری از کدگذاری ممیز شناور IEEE 754 استفاده میکنند — هر دو به پارامترهای اضافی نیاز دارند که این ماشینحساب آنها را دریافت نمیکند.
چرا پیشوند 0x در کد ظاهر میشود اما در خروجی نه؟
پیشوند 0x (و 0b برای باینری، 0o برای هشتهشتی) یک نحو تحتاللفظی مخصوص زبان برنامهنویسی است که به کامپایلر یا مفسر میگوید چه مبنایی را انتظار داشته باشد. ماشینحساب رشته ارقام خام را بدون پیشوند خروجی میدهد تا در هر زمینهای قابل استفاده باشد.