ورود

View Full Version : مبنای 2



vistacali
دوشنبه 24 اسفند 1388, 13:52 عصر
:ناراحت::ناراحت::ناراحت::گیج: :گیج::افسرده::افسرده::افسرده:
اطلاعات بیشتر : پیشاپیش سال نو همه مبارک
سلام دوستان یک برنامه دارم مینویسم پروژه ی بعداز عیدم هست

دوستان در این پروژه که با زبان ویژوال بیسیک دارم مینویسم میخوام بگم اعدادی را که وارد میکنم فقط 0 و 1 هست که این راحت هست با یک شرط نوشتم

خوب حالا میخوام بگم اعداد وارد شده که همون 0 و 1 ها در مبنای (2)دودویی هستن و کارهایی را که میخوای انجام بدی در مبنای دو انجام بده
تقریق و جمع که مخوای انجام بدی در مبنای 2 انجام بده باید چه جور بهش بفهمونم

مثال : عدد 1010100+0111100کن و جواب بده به ما 10010000
مثل ماشین حساب ویندوز این کار رو برای من انجام بده دوستان فقط همین قسمت برنامه من مونده 90 درصد کار رو انجام دادم دیگه این رو بلد نیستم کمکم کنید ممنون میشوم

نتکه :اگر به زبان c++ هم باشه مشکلی ندارم.

xxxxx_xxxxx
دوشنبه 24 اسفند 1388, 21:29 عصر
سلام،
دو عدد باینری دارید به طول n و m .
یک حلقه For به طول، n یا m ، هر کدام که بزرگتر هستند ایجاد کنید.
حلقه شما باید به صورت معکوس حرکت کنه. (از سمت بیت کم ارزش به سمت بیت پر ارزش)
درون حلقه، بیت های منتاظر را با یکدیگر جمع کنید. اگر حاصل جمع 0 یا 1 شد، حاصلجمع را در یک متغیر جدید به عنوان Result ذخیره کنید. اما اگر حاصلجمع 2 شد، یک متغیر دیگر به عنوان Carry نیاز دارید که خارج از حلقه تعریف کرده اید. خب اگر حاصلجمع دو بیت متناظر 2 شد، متغیر Carry رو 1 می کنید و Result را 0
در هر بار جمع کردن اعداد، باید مقدار Carry را هم در حاصلجمع دخیل کنید.

اگر موفق نشدید، کد خودتون رو اینجا بزارید.

vistacali
پنج شنبه 27 اسفند 1388, 09:28 صبح
Cls: M = Val(Text1.Text): N = Val(Text2.Text): I = 1: L = Val(Text3.Text)
Do While (N <> 0)
R = N Mod 10
N = N \ 10
If R = 0 Then
R = 1
'Print r;
Ar(I) = R
ElseIf R = 1 Then
R = 0
'Print r;
Ar(I) = R
End If

I = I + 1
Loop
'Chap
For I = L To 1 Step -1
Print Ar(I);
Next I

دوست عزیز من فقط در جمع کردن مشکل دارم اگر برای جمع عدد کمکم کنی ممنون میشوم
این سورس بالا اعدادرا در م 2 گرفته و نقیض میکند