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

ببین، این یه سیستم عددنویسی غیر استاندارد ولی همچنان «موضعی» (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 رو به مبنای سه متوازن تبدیل کنیم. اول از همه، عدد رو به مبنای سه معمولی میبریم:
حالا از سمت راست (کمارزشترین رقم) شروع میکنیم به پردازش:
- رقمهای
1،0و1رو دست نمیزنیم و رد میشیم. (چون اینا توی مبنای سه متوازن هم مجازن) - رقم
2رو بهZتبدیل میکنیم و به رقم سمت چپش یه واحد اضافه میکنیم. اینجوری به1Z101میرسیم.
نتیجه نهایی میشه 1Z101.
برای اینکه مطمئن بشیم درسته، بیا برش گردونیم به مبنای ده:
مثال ۲: بیا 237 رو به مبنای سه متوازن تبدیل کنیم. اول از همه، میبریمش به مبنای سه معمولی:
حالا از سمت راست پردازشش میکنیم:
0و1رو دست نمیزنیم.- رقم
2رو بهZتبدیل میکنیم و به رقم بغلیش (سمت چپ) یکی اضافه میکنیم. عدد میشه23Z10. - حالا رقم
3رو به0تبدیل میکنیم و به رقم سمت چپش یکی اضافه میکنیم. عدد میشه30Z10. - دوباره یه
3دیگه داریم. اونم به0تبدیل میکنیم و به رقم سمت چپش (که اینجا به طور پیشفرض0هست) یکی اضافه میکنیم. اینجوری به100Z10میرسیم.
نتیجه نهایی میشه 100Z10.
برای چک کردن، برش گردونیم به مبنای ده: