واضح آرشیو وب فارسی:سایت ریسک: View Full Version : boolean elhamkurd15-02-2010, 09:28 AM:41:سلام چرا متغير Boolean به ميزان 2 بايت از حافظه را اشغال ميكند؟ در صورتيكه با يك بايت مي توان 0 يا 1 را (True-False) را ذخيره نمود؟ aaaammmm8715-02-2010, 10:05 AMEdit Post !!!!!!!!!!!!!!!!!!!! 808615-02-2010, 10:48 AM:41:سلام چرا متغير Boolean به ميزان 2 بايت از حافظه را اشغال ميكند؟ در صورتيكه با يك بايت مي توان 0 يا 1 را (True-False) را ذخيره نمود؟ با سلام اينم بايد بدونيم كه مقدار عددي True برابر -1 و مقدار عددي False برابر 0 ميباشد. فكر كنم جوابتان را گرفته باشيد. با تشكر MR Cracker15-02-2010, 10:56 AMبا سلام اينم بايد بدونيم كه مقدار عددي True برابر -1 و مقدار عددي False برابر 0 ميباشد. فكر كنم جوابتان را گرفته باشيد. با تشكر درسته ولی حتی با یک بیت هم می شه این کار رو کرد. 808615-02-2010, 11:52 AMدرسته ولی حتی با یک بیت هم می شه این کار رو کرد. اگر شما يك متغيي از نوع boolean داشته باشيد اين متغيير همزمان دو مقدار True و False را در خود نگه ميدارد. و با توجه به دستورات اعمالي شما يك مقدار را برميگرداند. به مثال زير دقت كنيد: Dim a As integer a=2 ? a ما ميدانيم يك متغيير از نوع integer دو بايت حافظه اشغال ميكند كه محدوده ي عددي آن از 32767 تا -32768 را در خود نگه ميدارد. يا مثلا: Dim a As String*3 a="String" ? a خروجي: Str ميدانيم كه يك متغيير از نوع String با طول ثابت به تعداد نويسه كه ما در متغيير ميريزيم مقدار نميگيرد و بستگي به نوع تعريف كردن ما دارد كه ميتواند تا 65400 نويسه را در خود قرار دهد. كه ما در اينجا مقدار 3 را به متغيير نسبت داده ايم، حالا چه يك حرف درون آن بريزيم و چه يك كلمه 6 بايتي مثل String را درون آن بريزيم، همان 3 بايت را اشغال ميكند. حالا بر متغيير Boolean هم همين موضوع حاكم است و وقتي كه ما يك متغيير از نوع Boolean تعريف ميكنيم مقدار پيش فرض آن 2 بايت است. يادمان باشد Boolean ثابت است و مقداري پيش فرض دارد و مقدار پيش فرض آن 0 يا همان False است. با تشكر :11: _H2_15-02-2010, 10:59 PMسلام مقدار Boolean فقط دو مقدار میتواند داشته باشد و یک تک بیت هم برای آن کافی است ولی تخصیص 2 یا 4 بایت در زبانهای مختلف به این نوع متغییر در راستای هماهنگی با هسته سیستم عامل و توابع API های ان میباشد. چون وقتی ویندوز 32 بیتی است اکثر توابع API بنیادین که شالوده ویندوز را تشکیل میدهند پارامترها را در قالب 32 بیتی میگرند و پس میدهند. یک عدد را 32 بیتی میگرند و اگر عددی بزرگی بخواهند دو تا ورودی/خروجی 32 بیتی high و low خواهند داشت! یک string را باز هم 32 بیتی میگیرند!!!!!!!!! ولی 32 بیتی که به نقطه RAM ای اشاره دارد که striong در ان قرار دارد. یعنی 32 بیت شامل یک عدد که آدرس RAM است. یک Boolean را هم 32 بیتی میگرند و صفر را به False و غیر صفر را کلا به True تعبیر میکنند. ===== از طرف دیگر اکثر توابع و دستوراتی که در زبانهای برنامه نویسی وجود دارد نگاشتی به اجرای تابع اصلی API هسته سیستم عامل است. پس هرچقدر ورودی و خروجی این توابع در برنامه نویسی هماهنگی بیشتری با API های اصلی شان داشته باشد کدهای میانی کمتری نیاز است و با کمترین میزان پردازش میتوان اطلاعات را هماهنگ کرد. به همین دلیل مقدار فضای Boolean بسته به شرایط و سیستم عامل و زبان و... 2 یا 4 بایت درنظر گرفته میشود. این مساله هماهنگی گاهاً حتی در شرایط اپراتورها هم وجود دارد مثلاً به صورت خاص در VB 6 قدیم دستوری مثل این مجاز بوده: !!!! برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید !!!! دقت میکنید که چطور بدون حتی وجود یک اپراتور صریح VB 6 یک Integer یا Long و... را به یک Boolean تعبیر میکند؟ ===== در نهایت بجهت هماهنگی بین محصولات مختلف (مثل ارتباط VB 6 با محصولات تحت COM) و سرعت این رویه برای Boolean ها در زبانهای مختلف و بسته به شرایط اتخاذ شده است. در نهایت در مصرزف RAM هم چندان تاثیری ندارد، چون معمولاً تعداد متغیرهای محلی زیاد نیستند مگر انکه آرایه شوند. مطلب مرتبط: (پست 12) http://forum.p30world.com/showthread.php?p=1254399#post1254399 موفق باشید. 808616-02-2010, 12:53 AMبا سلام در ضمن واحد اصلي ظرفيت حافظه بايت ميباشد. اينم ميدونيم كه هر 8 بيت 1 بايت ميباشد. به نظر من اين مباحث استانداردهاي تعريف شده اي ميباشد كه بحث در مورد آنها بيفايده است. مثل اينكه بگيم پژو 206 با سرعت 120 هم راه ميره چرا تا سرعت 210 طراحي شده؟! با تشكر سایت ما را در گوگل محبوب کنید با کلیک روی دکمه ای که در سمت چپ این منو با عنوان +1 قرار داده شده شما به این سایت مهر تأیید میزنید و به دوستانتان در صفحه جستجوی گوگل دیدن این سایت را پیشنهاد میکنید که این امر خود باعث افزایش رتبه سایت در گوگل میشود
این صفحه را در گوگل محبوب کنید
[ارسال شده از: سایت ریسک]
[مشاهده در: www.ri3k.eu]
[تعداد بازديد از اين مطلب: 1744]