PDA

نسخه کامل مشاهده نسخه کامل : تبدیل واحد های رایانه ای به یکدیگر



shadmehrshadow1
19-03-2014, 20:34
سلام
می میخوام بتونم واحد های رایانه ای رو به هم تبدیل کنم. ولی کیم مشکل دارم.
مثلا :
بایت
کیلو بایت
مگا بایت
گیگا بایت
ترا بایت
پتا بایت
اگزا بایت

مثلا نمیدونم که هر 1 بایت چند مگابیت هست که بعدا از طریق ضرب بتونم به دست بیارم. مشکل اصلیم توی تبدیل واحد های کوچک تر به بزرگتر هست.
برای مثال میدونمی هر 1 کیلو بایت برابر 1024 بایت هست و به راحتی برای به دست آوردن اینکه 10 کیلو بایت چند بایت هست کافیه 10رو ضرب در 1024 کنیم.
ولی برای برعکسش یکم کار مشکل میشه .
ممنون میشم راهنمایی بفرمایید.

Msba
19-03-2014, 23:48
چه طور است که تبدیل به بزرگتر را می دانید و معکوس را خیر ؟ (عدد فرضی در محاسبه ی انتگرال نیست که آخرش C بگذاریم:n02:)
یک بایت 8 بیت است. ابتدا مگا بیت را بکنید مگا بایت (یا بایت را بکنید بیت ) که واحد دو طرف یکسان شود که یک مگابیت می شود 128 کیلوبایت.یعنی تا اینجا یک بایت می شود یک بروی 128K برحسب مگابیت. پس یک بایت می شود این قدر مگابیت:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
حالا 10 بایت چند گیگابیت هست؟

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

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

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
کیلو و مگا و ... هم که حاصل ضرب پیاپی 2 به توان 10 هستند(1024) که می دانید.

موفق باشید.

shadmehrshadow1
27-03-2014, 08:50
حالا 10 بایت چند گیگابیت هست؟

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

یعنی 10 بایت برابر با 1گیگا بایت هست؟؟؟؟!!
یعنی کسی که میگه : من 10 بایت فایل دارم = 1گیگابایت فایل دارم و یا برعکس کسی که میگه: من 1 گیگابایت فایل دارم=10 بایت فایل دارم.

فکر نکنم درست باشه این روش.

10 بایت = 0.00000007451 گیگابایت

تمام مثال های شما چنین مشکلی رو دارند.

bestdata
27-03-2014, 09:26
اگر ویندوز 8.1 دارید از بخش مترو می تونید برنامه Calculator رو باز کنید بعد از بخش Converter استفاده کنید و Volume رو به Data تبدیل کنید بعد هر واحدی که میخواهید رو تبدیل می کنید

اما یه مثلا من برای شما یک بایت رو به یک کیلو بایت و برعکس تبدیل می کنیم
یک بایت چند کیلو بایت هست؟
برای اینکار باید مقدار بایت را تقسیم بر 1024 کنیم
یعنی 1/1024 نتیجه میشه 0.0009765625 کیلوبایت

یک کیلو بایت چند بایت هست؟
برای اینکار باید مقدار کیلوبایت را ضربدر 1024 کنیم
یعنی 1*1024 نتیجه میشه 1024 بایت

امید وارم که مفید بوده باشه

Msba
27-03-2014, 12:00
یعنی 10 بایت برابر با 1گیگا بایت هست؟؟؟؟!!
یعنی کسی که میگه : من 10 بایت فایل دارم = 1گیگابایت فایل دارم و یا برعکس کسی که میگه: من 1 گیگابایت فایل دارم=10 بایت فایل دارم.

فکر نکنم درست باشه این روش.

10 بایت = 0.00000007451 گیگابایت

تمام مثال های شما چنین مشکلی رو دارند.
اول بگویم که اون خط چین ها خط کسری است.
10 بایت می شود 80 بیت. تا اینجا که مشکلی نیست.خوب حالا این 80 بیت تقسیم شود بر 1G می شود :

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
پس حاصل کل می شود اینقدر گیگابیت.
اگر گفته شده بود گیگابایت اون وقت می شد:

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

موفق باشید.

shadmehrshadow1
29-03-2014, 14:30
یک بایت چند کیلو بایت هست؟
برای اینکار باید مقدار بایت را تقسیم بر 1024 کنیم
یعنی 1/1024 نتیجه میشه 0.0009765625 کیلوبایت

یعنی برای تبدیل 10 بایت به کیلو بایت باید 10/1024 رو انجام بدیم؟!
در این صورت برای تبدیل 10 بایت به گیگابایت باید 10/1073741824 رو انجام بدیم؟
1073741824=1024*1024*1024
شایدم من درست متوجه نشده ام.


اول بگویم که اون خط چین ها خط کسری است.
بله من نمیدونستم که معنی اون خط چین ها خط کسری هست.

10 بایت می شود 80 بیت. تا اینجا که مشکلی نیست.
بله مشکلی نیست.


خوب حالا این 80 بیت تقسیم شود بر 1G می شود
با این بخش مشکل دارم. 80 بیت تقسیم بر 1G می شود یعنی چی؟ در این جا منظورتون از 1G چیست؟؟
80 رو تقسیم بر چه عددی باید بکنم



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

این عدد چیست؟

در واقع من دنبال یک فرمول و چیزی ثابت هستم که بتونم با تقسیم و ضرب عدد در اون جواب رو به دست بیارم یک چیز مثل مثالی که bestdata زد.
ممنون

Msba
29-03-2014, 18:04
در این صورت برای تبدیل 10 بایت به گیگابایت باید 10/1073741824 رو انجام بدیم؟

دقیقا.



در این جا منظورتون از 1G چیست؟؟

همان 1024*1024*1024 (معادل 2 به توان 30) .
دقت کنید:


خوب حالا این 80 بیت تقسیم شود بر 1G می شود:

در انتهایش دونقطه ":" دارد.
یعنی حاصل آن می شود آن عددی که در خط بعدش است.



این عدد چیست؟

آن مثال "10 بایت چند گیگابیت است؟" را گفته است. فرض گرفتیم این سوال بود "10 بایت چند گیگابایت است؟" آن وقت این عدد نوشته شده حاصل می شد. از همان رابطه ی تقسیم. فقط این بار دیگر 8* را نداشت.

به عمل تقسیم فکر کنید. عملگرش همین است.
50بایت می شود چند ترابایت؟
50 تقسیم بر 1024*1024*1024*1024 می شود پاسخ این سوال.
اگر می خواهید این تبدیلات را با برنامه نویسی بسازید می توانید از 2 به توان n ؛ و 2 به توان n- استفاده کنید.
اینگونه:
50 کیلوبایت چند بایت است:

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

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
با فرض اینکه تابع pow توان را حساب کند. آرگومان اول آن پایه و آرگومان دوم آن نما باشد.
37 بایت چند ترابیت است:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
10 بیت چند مگابایت است:

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

اگر در پلتفرم های دیگر کار می کنید شیفت به چپ و راست سرعت اجرای بسیار بیشتری نسبت به تابع توان دارد.
موفق باشید.

shadmehrshadow1
31-03-2014, 15:21
خیلی ممنون.
برای اینکه حاصل رو به صورت 1.073742E+10 نشون نده باید چه کار کنم؟

Msba
31-03-2014, 18:48
در هنگام استفاده از ToString در C# و یا VB.net می توانید از # و 0 استفاده کنید مثلا:

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

shadmehrshadow1
01-04-2014, 11:23
فکر کنم اگه روش کارم رو بگم و شما مشکلات اون رو بهم بگین بهتر باشه.

من توی فرم دو کمبو باکس دارم. درون هر دو مقادری زیر وجود داره:
بایت
کیلو بایت
مگا بایت
گیگا بایت
ترا بایت
پتا بایت
اگزا بایت

که یکی برای تبدیل از مبنای مثلا کیلو بایت (cboComFrom) و دیگری برای تبدیل به مبنای مثلا گیگابایت (cboComTo) هست و یک تکست باکس برای نوشتن مقداری که قرار است تبدیل بشود (txtConvertComputer) و یک تکست باکس هم برای نمایش پاسخ (TxtAnswerComputer) .

و من از یه چنین الگوریتمی استفاده می کنم.


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

که مثلا مقدار 30 یعنی تبدیل گیگاباست به بایت ( 3=گیگابایت و 0=بایت)
تبدیل واحد های بزرگ به کوچک رو براشون مقدار گذاشتم اما هنوز برای تبدیل واحد های کوچک به بزرگ مقداری نذاشتم ( 0 ) .
ممنون میشم که راهنمایی کنید . و اگه کلا روش مشکل داره بگید. و همین طور مشکل در نمایش پاسخ به شکل 1.073742E+10 و اینکه نوع متغیر ها احتمالا اشتباه تعریف شده.

ممنون . ببخشید زیاد طولانی شد بحث این تاپیک

szh_1367
01-04-2014, 16:42
این تبدیل مبناها رو ببین




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

این هم یک مثال برای تبدیل به بایت


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

بقیه موارد هم به همین شکل میتونی تبدیل کنی

shadmehrshadow1
03-04-2014, 18:23
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

بقیه موارد هم به همین شکل میتونی تبدیل کنی

ممنون. اما مثال های شما برای تبدیل مبنا های بزرگ به کوچک است . و همون طور که در پست های قبلی گفته شد در این بخش مشکلی وجود نداشت و مشکل تنها در بخش تبدیل مبنا های کوچک به بزرگ هست.
مثلا : 10 بایت چند گیگابیت هست؟
و به دنبال یک الگوریتم برای ایت تبدیل ها هستم.

szh_1367
03-04-2014, 20:27
ممنون. اما مثال های شما برای تبدیل مبنا های بزرگ به کوچک است . و همون طور که در پست های قبلی گفته شد در این بخش مشکلی وجود نداشت و مشکل تنها در بخش تبدیل مبنا های کوچک به بزرگ هست.
مثلا : 10 بایت چند گیگابیت هست؟
و به دنبال یک الگوریتم برای ایت تبدیل ها هستم.

این جدول رو نگاه کن همه واحد ها رو نوشته

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

شما دو عمل رو باید انجام یا باید ضرب کنید یا تقسیم

مثلا برای تبدیل 10 بایت به گیگابایت
10 * 8 = 80 bit
10 bytes
10 / 128 = 0.078125 kilobits
10 / 1024 = 0.009765625 kilobytes
10 / 128 / 1024 = 0.0000762939453125 megabits
10 / 1024 / 1024 =megabytes 9.5367431640625e-6
10 / 128 / 1024 / 1024 =gigabits 7.450580596923828e-8
10 / 1024 / 1024 / 1024 = gigabytes 9.313225746154785e-9

از کوچک به بزرگ تقسیم

از بزرگ به کوچک ضرب

عددی 1024 همیشه ثابت هست چه در تقسیم چه در ضرب

من مگابیت و گیگابیت رو هم برای درک بهتر مطلب نوشتم شما میتوانید نادیده بگیرید

shadmehrshadow1
04-04-2014, 15:46
خیلی ممنون دوست عزیز :n16:
اون کدی که من گذاشتم رو به نظرتون روش درستی هست که بعدا تغییراتی رو توش اعمال کنم و تقسیم و ضرب رو انجام بدم؟
و اینکه توی اون کد کدوم قسمت رو باید تغییر بدم که پاسخ رو به صورت 1.073742E+10 نشون نده؟ البته دوست خوبمون یک راه حل رو گفتن اما من دقیق متوجه نشدم منظورشون رو.

Msba
04-04-2014, 17:27
من یک مثال برای شما نوشتم (فکر کنم از خواندن اون case ها کمتر زمان برد!). اینجا ([ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]).

هیچ خطایی را هندل نکردم خودتان موارد مورد نیاز را اضافه کنید. (فرصت هم نکردم خطاهای احتمالی را بگیرم، از این بابت عذرخواهی می کنم.)

موفق باشید.

szh_1367
05-04-2014, 12:54
خیلی ممنون دوست عزیز :n16:
اون کدی که من گذاشتم رو به نظرتون روش درستی هست که بعدا تغییراتی رو توش اعمال کنم و تقسیم و ضرب رو انجام بدم؟
و اینکه توی اون کد کدوم قسمت رو باید تغییر بدم که پاسخ رو به صورت 1.073742E+10 نشون نده؟ البته دوست خوبمون یک راه حل رو گفتن اما من دقیق متوجه نشدم منظورشون رو.

متاسفانه کدتون برام خوانا نیست

برای نشان دادن درست عدد باید از متد ToString استفاده کنید مثال های زیر رو نگاه کنید

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