مکمل دو
دانشنامه عمومی
در هر مبنایی مثل r، دو نوع متمم وجود دارد. یکی متمم مبنا و دیگری متمم مبنای کاهش یافته. در مبنای دو یا همان دستگاه اعداد دودویی نیز، دو نوع متمم وجود دارد. یکی متمم دوم یا همان متمم مبنا و دیگری متمم اول یا همان متمم مبنای کاهش یافته.
مکمل دو یک عدد k بیتی مانند n برابر است با 2 k − n
مدار هایی که عملیات های ریاضی جمع و ضرب اعداد k بیتی را انجام می دهند، عموما این کار را به پیمانه 2 k انجام می دهند. یعنی اگر مثلا مداری دارید که اعداد ۴ بیتی را جمع می زند، و به آن 13 = ( 1101 ) 2 و 9 = ( 1001 ) 2 را ورودی دهید، آن مدار به شما ( ( 13 + 9 ) mod 2 4 ) = ( 22 mod 16 ) = 6 = ( 0110 ) 2 را تحویل می دهد.
اگر این خاصیت را کنار این خاصیت مکمل دو بگذاریم که "مکمل دو هر عدد با منفی آن عدد به پیمانه 2 k همنهشت است"، می توانیم در عملیات های ریاضی به جای منفی اعداد، از مکمل دو آن ها استفاده کنیم.
فرض کنید با دستگاه های ۴ بیتی کار می کنیم.
مکمل دو عدد ۳، برابر 2 4 − 3 = 13 است.
جمع ۵ با منفی ۳ یا همان ۵ منهای ۳، برابر 5 + 13 mod 16 = 2 است.
ضرب 2 در منفی ۳ با دستگاه های ۴ بیتی، برابر 2 ∗ 13 mod 16 = 10 است که ۱۰ طبق تعریف، مکمل دو عدد 6 یا همان منفی 6 است.
در دستگاه اعداد دودویی پیدا کردن مکمل یک اعداد بسیار ساده است. کافیست به جای صفرها، یک، و به جای یک ها صفر قرار دهید.
مثال یک
متمم اول عدد ( ۱۰۱۱۰۰۰ ) ۲ برابر است با ( ۰۱۰۰۱۱۱ ) ۲ مثال دو
متمم اول عدد ( ۰۱۰۱۱۰۱ ) ۲ برابر است با ( ۱۰۱۰۰۱۰ ) ۲ مثال سه
همانطور که می بینید در این مثال با رها کردن دو صفر کم ارزش تر و اولین ۱ و سپس جایگزینی همهٔ ۱ها با ۰ها و همهٔ ۰ها با ۱ها در چهار رقم باارزش تر باقی مانده ، یا با با معکوس کردن ( تغییر یک به صفر، و بلعکس ) و جمع کردن عدد یک با عدد معکوس شده، مکمل دوم آن بدست می آید.