PDA

View Full Version : کمک در مورد معادلات باینری



mohabad
شنبه 30 شهریور 1392, 15:49 عصر
سلام دوستان
من تو این معادلات باینرها مشکل دارم اگه میتونید راهنمایی کنید ممنون میشم.
الان مقدار 5 و 3 از نوع int هستن ومیخام بدونم چرا معادلشون این میشه؟
5: 00000000000000000000000000000101
3: 00000000000000000000000000000011
ممنون میشم توضیح بدید که چگونه یک عدد رو معادل باینرش رو بدست بیارم

hamid_hr
شنبه 30 شهریور 1392, 16:08 عصر
تبدیل باینری به دسیمال : ( مبنای 2 به مبنای 10 )
فرض کنید ما می خواهیم عدد باینری 11111101 را به دسیمال تبدیل کنیم
برای اینکار میایم عدد اول از سمت راست یعنی 1 را در 1 ضرب می کنیم
1*1
بعد عدد دوم از سمت راست را که میشه 0 در 2 ضرب می کنیم
0*2
بعد عدد سوم از راست که میشه 1 را در 4 ضرب می کنیم ، عدد بعدی در 8 ، بعدی 16 و ...
و در انتها جواب همه ضرب ها رو با هم جمع می کنیم
1*1 + 0*2 + 1*4 + 1*8 + 1*16 + 1*32 + 1*64 + 1*128

m_ali_gho
شنبه 30 شهریور 1392, 16:16 عصر
یعنی چی چرا معادلشون این میشه؟ اگه این نشه پس جی باید بشه؟؟؟
مثلا اون 3 که نوشتی میشه گفت عدد باینری معادل 3 تو سیستم های 32 بیتی
تو یه سیستم 32 بیتی، عدد صحیح میتونه از منفی 2,147,483,648 که میشه 11111111111111111111111111111111 تا عدد مثبت 2,147,483,647 که اینم میشه 01111111111111111111111111111111 باشه
برای تبدیل یه عدد تو مبنای ده به مبنای 2 باید از تقسیم متوالی (فکر کنم یکی از روشها باشه) استفاده کنی.
با یه سرچ در مورد تیدبل مبنا همه چی دستت میاد.

a_ehsan68
شنبه 30 شهریور 1392, 17:05 عصر
سلام دوست عزیز.

2تا عددی که به دست آوردی بر مبنای 2 (Binary) هستن.

برا تبدیل به مبناهای مختلف 2 یا 8 یا 10 یا 16 یا .... راه حلها فرق میکته. حالا اگه شما مبنای خاصی مد نظرته بگو تا راحشو بهت بگم.

برا بدست آوردن اعداد باینری به صورت زیر عمل می کنیم: مثلا عدد 20 و 9.

1 2 4 8 16 32 64 128 256
1 0 0 1 0 0 0 0 0 => 9
0 0 1 0 1 0 0 0 0 => 20


باز هم اگه سوالی داشتی در خدمتم. موفق باشی.

mohabad
شنبه 30 شهریور 1392, 22:29 عصر
یعنی دسیمال این 11111101 میشه این >>> 253 ؟

m_ali_gho
شنبه 30 شهریور 1392, 23:34 عصر
آره داداش درست حساب کردی. ویندوزت چیه؟

mohabad
یک شنبه 31 شهریور 1392, 00:05 صبح
آره داداش درست حساب کردی. ویندوزت چیه؟

ویندوز 7.
راستی داداش من الان متوجه شدم که چطور باینر به دسیمال تبدیل بشه ولی نمیدونم چه طوری دسیمال به باینر تبدیل میشه .ممنون میشم در این مورد هم راهنمایی کنید مثلا الان باینر 878 چی میشه؟ لطفا طریقه بدست اوردنشو توضیح بدید.

m_ali_gho
یک شنبه 31 شهریور 1392, 00:24 صبح
من که اون بالا گفتم باید از روش تقسیم های متوالی استفاده کنی. یه نگاه کن. در مورد ویندوزت پرسیدم. ماشین حساب ویندوز سون یه حالتی داره به اسم programmer. از این حالت میتونی برای تغییر اعداد بین مبناهای 2و8و10و16 استفاده کنی. من خودم اگه نیاز به تغییر مبنا پیدا کنم از این روش استفاده میکنم.
ویکی پدیا (http://fa.wikipedia.org/wiki/%D9%85%D8%A8%D9%86%D8%A7%DB%8C_%D8%AF%D9%88#.D8.AA .D8.A8.D8.AF.DB.8C.D9.84_.D8.A7.D8.B2_.D8.AF.D9.87 .E2.80.8C.D8.AF.D9.87.DB.8C_.D8.A8.D9.87_.D8.AF.D9 .88.D8.AF.D9.88.DB.8C.DB.8C) :
یکی از روشهای تبدیل از مبنای ده‌دهی به دودویی تقسیم متوالی بر عدد دو است. که طی آن باقیمانده‌ها مورد استفاده قرار می‌گیرند. تقسیمات را تا صفر شدن خارج‌قسمت انجام می‌دهیم. در نهایت آخرین خارج قسمت و بعد از آن باقیمانده‌ها را از آخر به اول کنار همدیگر قرار می‌دهیم. عدد بدست آمده معادل دودویی خواهد بود.
خودتم یه سرچ میزدی خوب بود!!!

aliagamon
یک شنبه 31 شهریور 1392, 00:29 صبح
اگه تو ریاضی میخوای که تقسیمه ....(سرچ)...
تو سی شارپ میتونی از convert.tostring استفاده کنی :

Convert.ToString(253, 2)