مازاد-۳

از ویکی‌پدیا، دانشنامهٔ آزاد
پرش به: ناوبری، جستجو

مازاد-۳ یا افزونی-۳ (به انگلیسی: Excess-3) و یا کد Stibitz، نمایش مغرضانه یا مازاد-N نامیده می‌شود، که مکمل کد BCD و سیستم اعداد می‌باشد. از سال ۱۹۷۰ این‌ روش در کامپیوترهای قدیمی، شمارش پول و ماشین حساب‌های قابل حمل و موارد دیگراستفاده می‌شد. این یک راه برای نشان دادن ارزش‌ها با تعدادی متعادل از اعداد مثبت و منفی بااستفاده‌از یک شماره‌از پیش تعیین شده N که به عنوان یک ارزش بایاس می‌باشد. این یک کد بدون وزن می‌باشد. در مازاد XS-3، شماره‌ها به عنوان رقم دهدهی وهر رقم در چهار بیت به عنوان ارزش رقمی به علاوه ۳ ("بیش از حد" مقدار) در نظر گرفته شده است:

  • کوچکترین عدد دودویی نشانگر کوچکترین مقدار است. (به عنوان مثال ۰ - ارزش اضافی)
  • بزرگترین عدد دودویی نشان دهنده بزرگترین مقدار است.( برای مثال value 2 N+1 −  Value Excess − 1 )
دهدهی XS-3 دهدهی XS-3 دهدهی XS-3 دهدهی XS-3
−۳ ۰۰۰۰ ۱ ۰۱۰۰ ۵ ۱۰۰۰ ۹ ۱۱۰۰
−۲ ۰۰۰۱ ۲ ۰۱۰۱ ۶ ۱۰۰۱ ۱۰ ۱۱۰۱
−۱ ۰۰۱۰ ۳ ۰۱۱۰ ۷ ۱۰۱۰ ۱۱ ۱۱۱۰
۰ ۰۰۱۱ ۴ ۰۱۱۱ ۸ ۱۰۱۱ ۱۲ ۱۱۱۱

یک عدد مانند ۱۲۷ کدگذاری می‌شود، کد هر یک از اعداد دهدهی آن بصورت (۰۱۰۰، ۰۱۰۱، ۱۰۱۰)می‌شود. مزیت اصلی کدینگ XS-3 روی کدینگ غیر مغرضانه است که یک عدد دهدهی مکمل 9 (برای تفریق) را می‌توان به عنوان یک عدد دودویی مکمل یک که فقط تمام بیت های آن متمم شده اند در نظر گرفت. علاوه بر این، هنگامی که مجموع دو عدد XS-3 بیشتر از ۹ شود، بیت نقلی از چهار بیت اضافه شده تنظیم خواهد شد.این کار به این دلیل، هنگامی که شما دو عدد بزرگتر یا برابر 0 اضافه می‌کنید، مقدار مازاد از مجموع شش حالت ممکن است.از آنجا چهار بیت صحیح می‌تواند مقادیر 0 تا 15 را در خود نگه دارد، یک مازاد از 6 یعنی هر جمعی بیش از 9 سرریز خواهد کرد.
افزودن مازاد-۳ کاری است روی یک الگوریتم متفاوت از سیستم دهدهی عیر مغرضانه یا وابسته به سیستم اعداد منظم دودویی. هنگامی که شما دو عددXS-3 با هم اضافه می‌کنید، نتیجه یک عددXS-3 نیست. به عنوان مثال، هنگامی که در XS-3 صفر و یک اضافه می‌کنید پاسخ به جای 1، 4 بنظر می‌رسد. به منظور حل این مشکل، هنگامی اضافه کردن ارقام به پایان رسید، اگر ننیجه عددی کمتر از 10 دهدهی باشد شما باید بایاس اضافی را با تفریق دودویی ۰۰۱۱ (3 دهدهی در باینری غیر مغرضانه) حذف کنید و اگر سرریز اتفاق افتاد تفرق دودویی ۱۱۰۱ (13 دهدهی در باینری غیر مغرضانه) انجام می‌دهیم.توجه داشته باشید که، در ۴ بیت دودویی، تفریق دودویی ۱۱۰۱ معادل جمع ۰۰۱۱ و بالعکس می‌باشد.
BCD به افزونی ۳ به عنوان مثال تبدیل (کد VHDL).

  entity bcdxs3 is
    Port (a: in std_logic;
           b: in std_logic;
           c: in std_logic;
           d: in std_logic;
          an: inout std_logic;
          bn: inout std_logic;
          cn: inout std_logic;
          dn: inout std_logic;
           w: out std_logic;
           x: out std_logic;
           y: out std_logic;
           z: out std_logic);
  end bcdxs3;
  architecture dataflow of bcdxs3 is
  begin
        an <= not a;
        bn <= not b;
        cn <= not c;
        dn <= not d;
         w <= (an and b  and d) or
              (a  and bn and cn) or
              (an and b  and c  and dn);
         x <= (an and bn and d) or
              (an and bn and c  and dn) or
              (an and b  and cn and dn) or
              (a  and bn and cn and d);
         y <= (an and cn and dn) or
              (an and c  and d) or
              (a  and bn and cn and dn);
         z <= (an and dn) or
              (a  and bn and cn and dn);
  end dataflow;

See also[ویرایش]