ورود

نسخه کامل مشاهده نسخه کامل : یک سوال ساده از عملگرها



نازنین زهرا
04-08-2009, 17:09
سوال این است که:حاصل عبارت روبه رو چه می شود
25 imp 41 eqv 37
می دانم که eqvاولویت اش بیشتر است می دانم باید به nbcd تبدیل شود تا به جواب برسیم
41=00101001
37=00100101
eqv=11110011=-13
چه طور جواب -13 می شود من هرکار می کنم عددی مثبت بالای 200 می رسم من فقط یک قسمت اش گفتم

نازنین زهرا
17-08-2009, 08:42
یعنی هیچ کس نمی دونه
این تست ویژوال چه طور هیچ کس نمی دونه

عــــلی
17-08-2009, 11:06
سلام.
فکر کنم کسی متوجه نشد...
متاسفانه منم متوجه نشدم...
اگه میتونین واضح تر بدید و یک یا چند مثال هم بزنید.
موفق باشید.

نازنین زهرا
19-08-2009, 06:18
فرض کنید یک عبارت به شما داده اند جواب اش از شما خواسته اند
حالا این عبارت این است
41 eqv 37
جواب شما چه عددی همین

_H2_
19-08-2009, 11:40
سلام
اول باید بدانید که محاسبات بیتی وابسته است به انداره متغیرهای مورد محاسبه.

مثلاً ...
جواب محاسبه فوق از 8 تا 64 بیتی با و بدون علامت در VB9 چنین خواهد بود:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

شاید به نظر شما این جواب ها مختلف باشند ولی از دید ریاضی مبنای دو این اعداد تغریباً برابر هستند و مشکل شما در عدم درک این تفاوت ناشی از عدم اطلاع از نحوه ذخیره اعداد منفی در رایانه میشود که طبق روشی موسوم به مکمل2 انجام میشود.

روش مکمل دو برای اعداد منفی چنین است که کل بیتهای عدد را معکوس کرده و سپس با 1 واحد کم میشود.
مثلاً اگر محاسبه یک بایتی باشد 13- چنین محاسبه و ذخیره میشود.
(در ج صفرهای اضافی تا انتهای متغییر بسیار لازم است!)

عدد 13 در قالب 8 بیتی
00001011

معکوس میشود
11110100

1- میشود
11110011

این عدد 13- در RAM در شرایط یک بایتی خواهد بود (SByte یا Int8 در VB9)

پس 11110011 در شرایط SByte یا Int8 میشود 13- ولی همین 11110011 اگر داخل یک Byte یا UInt8 باشد معنی 243+ را میدهد !!!!

حالا وقتی متغییر بزرگتر شود (مثلاً 16 بیتی) صفرهای خالی قبل از ان همه یک شده و عدد را بزرگتر میکنند.

عدد 13 در قالب 16 بیتی
0000000000001011

عدد 13- در قالب 16 بیتی
1111111111110011

باز هم 1111111111110011 در قالب علامت دار 16 بیتی (مثل Short یا Int16 در VB9) معنی 13- میدهد ولی همین مقدار در یک قالب 16 بیتی بدون علامت (مثل UShort یا UInt16 در VB9) معنی 65523 میدهد!!!

میبینید که فرق خاصی ندارد و همه جوابها یکی است.

=====

ولی اگر میخواهید بدانید که روش ریاضی مکمل2 برای جبر مبنای 2 از کجا آمده به اینت دقت کنید:

پس 13+ این شد:
00001011

و 13- هم این شد:
11110011

خوب حالا اگر 13+ با 13- جمع شود چه میشود؟
00000000

خوشتان امد! این یعنی دنیای زیبا و جذاب ریاضی.