پرش به محتویات

مبنای سه متوازن

"اینم کامپیوتر Setun که با سیستم مبنای سه متوازن کار می‌کرده"

ببین، این یه سیستم عددنویسی غیر استاندارد ولی همچنان «موضعی» (positional) به حساب میاد. ویژگی باحالش اینه که رقم‌هاش می‌تونن یکی از این سه تا مقدار رو داشته باشن: -1، 0 و 1. با این حال، مبناش هنوزم 3 هست (چون کلاً سه تا مقدار ممکن برای هر رقم داریم). از اونجایی که نوشتن -1 به عنوان یه رقمِ تنها یکم سخته، ما در ادامه از حرف Z برای نشون دادنش استفاده می‌کنیم. اگه فکر می‌کنی سیستم عجیب و غریبیه، یه نگاه به عکس بنداز. این یکی از کامپیوترهاییه که واقعاً از همین سیستم استفاده می‌کرده.

اینم چند تا عدد اول که توی مبنای سه متوازن نوشته شدن:

    0    0
    1    1
    2    1Z
    3    10
    4    11
    5    1ZZ
    6    1Z0
    7    1Z1
    8    10Z
    9    100

این سیستم بهت اجازه میده که عددهای منفی رو بدون نیاز به علامت منفیِ اولش بنویسی. کافیه خیلی ساده رقم‌های عدد مثبت متناظرش رو برعکس کنی (یعنی 1 رو بکنی Z و Z رو بکنی 1).

    -1   Z
    -2   Z1
    -3   Z0
    -4   ZZ
    -5   Z11

یه نکته جالب: عددهای منفی با Z شروع میشن و عددهای مثبت با 1.

الگوریتم تبدیل

تبدیل یه عدد به مبنای سه متوازن خیلی راحت‌تر میشه اگه اول اون رو به مبنای سه معمولی ببریم. وقتی یه عدد توی مبنای سه استاندارد نوشته میشه، رقم‌هاش 0، 1 یا 2 هستن. حالا کافیه از سمت راست (کم‌ارزش‌ترین رقم) شروع کنیم به پیمایش. به هر 0 و 1 که رسیدیم کاری باهاشون نداریم، چون توی سیستم متوازن هم مجاز هستن. اما هر جا 2 دیدیم، باید تبدیلش کنیم به Z و به رقم سمت چپیش یه دونه اضافه کنیم. همین بلا رو باید سر رقم 3 هم بیاریم و تبدیلش کنیم به 0 (و باز به رقم بعدی یکی اضافه کنیم). شاید بپرسی 3 از کجا میاد؟ خب، اولش توی عدد مبنای سه ما 3 وجود نداره، ولی وقتی به یه رقم 2 یه واحد اضافه می‌کنیم، ممکنه 3 درست بشه.

مثال ۱: بیا عدد 64 رو به مبنای سه متوازن تبدیل کنیم. اول از همه، عدد رو به مبنای سه معمولی می‌بریم:

$$ 64_{10} = 02101_{3} $$

حالا از سمت راست (کم‌ارزش‌ترین رقم) شروع می‌کنیم به پردازش:

  • رقم‌های 1، 0 و 1 رو دست نمی‌زنیم و رد میشیم. (چون اینا توی مبنای سه متوازن هم مجازن)
  • رقم 2 رو به Z تبدیل می‌کنیم و به رقم سمت چپش یه واحد اضافه می‌کنیم. اینجوری به 1Z101 می‌رسیم.

نتیجه نهایی میشه 1Z101.

برای اینکه مطمئن بشیم درسته، بیا برش گردونیم به مبنای ده:

$$ 1Z101 = 81 \cdot 1 + 27 \cdot (-1) + 9 \cdot 1 + 3 \cdot 0 + 1 \cdot 1 = 64_{10} $$

مثال ۲: بیا 237 رو به مبنای سه متوازن تبدیل کنیم. اول از همه، می‌بریمش به مبنای سه معمولی:

$$ 237_{10} = 22210_{3} $$

حالا از سمت راست پردازشش می‌کنیم:

  • 0 و 1 رو دست نمی‌زنیم.
  • رقم 2 رو به Z تبدیل می‌کنیم و به رقم بغلیش (سمت چپ) یکی اضافه می‌کنیم. عدد میشه 23Z10.
  • حالا رقم 3 رو به 0 تبدیل می‌کنیم و به رقم سمت چپش یکی اضافه می‌کنیم. عدد میشه 30Z10.
  • دوباره یه 3 دیگه داریم. اونم به 0 تبدیل می‌کنیم و به رقم سمت چپش (که اینجا به طور پیش‌فرض 0 هست) یکی اضافه می‌کنیم. اینجوری به 100Z10 می‌رسیم.

نتیجه نهایی میشه 100Z10.

برای چک کردن، برش گردونیم به مبنای ده:

$$ 100Z10 = 243 \cdot 1 + 81 \cdot 0 + 27 \cdot 0 + 9 \cdot (-1) + 3 \cdot 1 + 1 \cdot 0 = 237_{10} $$

مسائل تمرینی