بولين
تاكنون با نوع هـاي داده اي String ،Double ،float ،int و DateTime آشـنا شـديد . نـوع داده اي مهـمديگري كه بايد نحوه كار با آن را بدانيد، Boolean است . بعد از اتمام اين نوع داده اي،با پركاربرد تـرين نـوع هـاي داده اي درNET. آشنا شده ايد .يك متغيير ب ولين مي تواند مقادير True (درست) و يـا False (غلـط ) را داشـته باشـد . متغييـر هـاي Boolean بيـشترهنگامي اهميت خود را نشان مي دهند كه برنامه شما بخواهد صحت يك شرط را بررسي كند
نگهداري متغيير ها :
عموما محدود ترين ق سمت يك سيستم، حافظه آن است. بنابراين برنامه شما بايد بـه بهتـرين و كارآمـد تـرين نحـو از ايـن قـسمتاستفاده كند . زماني كه يك متغيير (از هر نوعي ) تعريف كنيد، قسمتي از حافظه را اشغال كرده ايد . بنابراين در تعريف متغيير هـا بايـددقت كنيد كه هم كمترين مقدار متغيير ممكن را تعريف كنيد و هم به بهترين نحو از آن استفاده كنيد .امروزه، به دو دليل نيازي نيست كه شما از جزئيات كامل بهينه سازي متغيير ها آگاه باشيد . دليـل اول ايـن اسـت كـه كامپيوترهـايامروزي مقدار زيادي حافظه دارند . از زماني كه لازم بود برنامه نويسان، برنامه هاي خود را در 32 كيلو بايـ ت از حافظـه كـامپيوتر جـابدهند خيلي گذشته است . دليل ديگر اين است كه كامپايلر هاي امروزي به صورت دروني، به اندازه كافي در اين زمينه هوشمند عملميكنند. به عبارت ديگر، كدهاي توليد شده توسط آنها تا حد ممكن بهينه ميشود تا بهترين كارايي را داشته باش .ند
دودويي :
كامپيوترها براي نگهداري هر اطلاعاتي از سيستم دودويي استفاده ميكنند . در حقيقت هر داده اي را كه شـما در كـامپيوتر نگهـداريميكنيد بايد در قالب صفر و يك ذخيره شوند . براي نمونه عدد صحيح 27 را در نظر بگيريد . در سيستم باينري يا دودويي اين عدد بـهصورت 11011 نمايش داده مي شود، كه هر كدام از اين اعداد در تواني از دو ضرب ميشوند .
نمودار شكل -12 3 به شما كمك ميكندتا عدد 27 را بهتر در سيستم ده دهي و در سيستم دودويي يا باينري نمايش دهيد .ممكن است در ابتدا اين مورد مقداري نامفهوم به نظر برسد . در مبناي 10 يا هم ان سيستم ده دهي كه با آن آشنا هستيد، براي تعيينارزش هر عدد، هر رقم از آن در تواني از ده ضرب ميشود . اولين رقم عدد از سمت راست در ده به توان صفر ضرب ميشود، عـدد دومدر ده به توان يك ضرب ميشود، عدد سوم در ده به توان دو ضرب ميشود و به همين ترتيب ادامه پيدا ميك .ندهمين روش در سيستم باينري هم وجود دارد . براي تبديل يك عدد در مبناي دو به يك عدد در مبنـاي ده، بايـد رقمهـا را از سـمتراست يكي يكي جدا كنيد و در دو به توان شماره مكان عدد ضرب كنيد (عدد اول از سمت راست در مكان صفرم، عدد دوم در مكانيكم و … قرار دارد). سپس تمام اعداد به دست آمده را با هم جمع كنيد. عددي كه به دست مي آيـد، نمـايش دهنـده همـان عـدد درمبناي ده است .
در مبناي 10 هر رقم ضريبي از يكي از توانهاي 10 است. براي اينكه مشخص كنيد يك رشته از ارقام كه در مبناي 10 نوشـته شـدهاند چه عددي را نشان مي دهند، كافي اس ت رقم اول را در 10 به توان 0، رقم دوم را در 10 به توان 1 و … ضرب كرده و حاصل را بايكديگر جمع كنيد .در مبناي 2 يا اعداد باينري، هر رقم ضريبي از يكي از توانهاي 2 است . براي تشخيص اينكه يك رشته ارقام در مبناي 2 چه عـدديرا نمايش مي دهند، بايد رقم اول را در 2 به توان 0، رقم دوم را در 2 به توان 1 و … ضرب كرده و حاصل را با يكديگر جمع كرد .
بيتها و بايت
در اصطلاحات كامپيوتري، به يك رقم باينري، يك بيت ميگويند . يك بيت كوچكترين بخش ممكن براي نمايش داده اسـت و فقـطميتواند داراي مقدار درست و يا غلط با . شد اين مقدار در مدارهاي كامپيوتر به وسيله وجود داشتن و يا وجود نداشتن جريـان مـشخصمي شود . دليل اينكه در هر قسمت از شكل -12 3 هشت بيت در كنار هم نشان داده شده اند، اين است كه هر هـشت بيـت در كنـارهم يك بايت را تشكيل مي دهند. بايت واحد اندازه گيري حافظه هاي كامپيوتر به شمار ميرود .يك كيلو بايت يا KB از 1024 بايت تشكيل شده است. دليل اينكه به جاي 1000 از 1024 بايت تشكيل شده است، ايـن اسـت كـه 1024 تواني از دو است ( دو به توان ده ). به دليل اينكه اعداد در كامپيوتر در مبناي دو ذخيره ميشوند، نگهـداري 1024 راحـت تـر ازنگهداري 1000 است. همانطور كه نگهداري 1000 براي شما كه از سيستم ده دهي استفاده ميكنيد راحت تر از 1024 است .به همين ترتيب يك مگا بايت يا MB برابر 1024 كيلو بايت يا 1048576 بايت، يك گيگا بايت 1024 مگا بايـت يـا 1073741824بايت است (دو به توان سي). همچنين ترا بايت برابر دو به توان چهل و پتا بايت برابر دو به توان پنجاه است .
همه اين مطالب به چه كار مي آيد؟ خوب، دانستن اين كه كامپيوتر چگونه اطلاعات را ذخيره ميكند ممكن است به شما كمـك كنـدكه برنامه هاي خود را بهتر طراحي كنيد . فرض كنيد كامپيوتر شما 256 مگا بايت حافظه دارد. اين مقدار حافظه برابـر 2147483648بايت است. بنابراين هنگامي كه در حال نوشتن نرم افزار هستيد بايد سعي كنيد كه از حافظه به بهترين نحو ممكن استفاده كنيد .
نمايش مقادير :
بيشتر كامپيوترهاي امروزي 32 بيتي هستند، يعني در هر لحظه ميتوانند با داده هايي به طول ب 32 يت كار كنند . اعدادي كه در بخشقبلي ديديد همگي اعداد هشت بيتي بودند . در يك عدد هشت بيتي حداكثر مقداري را كه مي توان نگهـداري كـرد بـه صـورت زيـراست :
*1 128 + 64*1 + 32*1 + 16*1 + 8*1 + 4*1 + 2*1 + 1*1 = 256
هر عدد 32 بيتي مي تواند مقاديري در محدوده 2147483647- تا 2147483647 را نگهداري كنـد . حـال اگـر بخواهيـد يـك عـددصحيح را نگهداري كنيد متغييري را به صورت زير تعريف ميكنيد :
int intNumber;
در اينجا، 32 .NET بيت از حافظه كامپيوتر را براي اين متغيير اختصاص ميدهد كه شما ميتوانيد اعداد در بازه اي كه گفتـه شـد رادر آن ذ خيره كنيد. اما به خاطر داشته باشيد كه مقدار حافظه كامپيوتر شما محدود است. براي مثال اگر 256 مگابايـت حافظـه داشـتهباشد، ميتوانيد 67108864 عدد صحيح را در آن نگهداري كنيد . ممكن است زياد به نظر برسـد . امـا بايـد دو نكتـه را در نظـر داشـتهباشيد. اول اينكه بعضي از متغ ييرها كه در فصلهاي بعدي با آنها آشنا ميشويم بسيار بيشتر از يك عدد صحيح فضا اشـغال مـي كننـد .دوم اينكه به خاطر داشته باشيد حافظه بين همه برنامه ها مشترك است و نبايد آن را هدر بدهيد .همچنين براي نگهداري يك عدد اعشاري با دقت مضاعف، متغييري به صورت زير تعريف ميكرديد :
double dblNumber;
براي نگهداري يك عدد اعشاري با دقت مضاعف به 64 بيت از حافظه نياز داريد. يعني ميتوانيد حداكثر 33554432 عدد اعـشاري بـادقت مضاعف در حافظه كامپيوتر خود داشته باشيد .
نكته: اعداد اعشاري با دقت معمولي 32 بيت از حافظه را اشغال مي كنند، يعني اين اعداد نصف اعداد اعشاري با دقت مضاعف و بـهاندازه ي اعداد صحيح فضا ميگيرند .
اگر يك متغيير از نوع صحيح تعريف كنيد، چه در آن 1 را ذخيره كنيد، چه 249 و يا 2147483647، دقيقا 32 بيت از فضاي حافظه رااشغال كرده ايد . اندازه عدد هيچ تاثيري در اندازه فضاي م ورد نياز براي ذخيره آن ندارد . اين مورد ممكن است هدر رفـتن حافظـه بـهنظر رسد . اما دقت داشته باشيد كه كامپيوتر تصور ميكند اعداد از نوع يكسان فضاي يكساني براي نگهداري نيـاز دارنـد . در غيـر ايـنصورت، نميتواند با سرعت قابل قبولي كار كند .حالا به چگونگي تعريف يك رشته نگاه كنيد :
string strData = “Hello, simpower!”;
بر خلاف اعداد صحيح و اعشاري، رشته ها داراي طول ثابتي نيستند . در رشته ها، هر كاراكتر دو بايت يا 16 بيت از فضاي حافظـه رااشغال ميكند . بنابراين براي نمايش اين رشته ي 13 كاراكتري، به 26 بايت يا 208 بيت فضا در ح افظه نياز داريد. حافظه كـامپيوتريكه پيشتر مثال زديم حدود دو ميليون كاراكتر را ميتواند نگهداري كند كه نسبت به اعداد صحيح و يا اعداد اعشاري بسيار كمتر است .اشتباهي كه بيشتر برنامه نويسان تازه كار انجام ميدهند اين است كه كمتر به تاثير نوع ذخيره داده ها در صرف ه جويي حافظه فكر ميكنند. براي نمونه اگر شما يك متغيير براي نگهداري رشته تعريف كنيد و سپس عدد صحيح در آن نگهداري كنيد، مانند زير :
string strData = “65536”;
در اينجا براي نگهداري اين عدد صحيح در قالب رشته، از 10 بايت يا 80 بيت استفاده كرده ايد. در صورتي كه ميتوانستيد بـا تعريـفاين متغيير از نوع عدد صحيح حافظه كمتري استفاده كنيد . براي نگهداري اين رشته عددي در حافظه هر كدام از اين كاراكترها بايـدبه يك عدد خاص تبديل شوند و سپس در حافظه ذخيره شوند . براي ذخيره متن در حافظه، بر اساس استانداردي به نام يونيكد
به هركاراكتر يك كد خاص داده ميشود . به عبارت ديگر هر كاراكتر يك كد از 0 تا 65535 دارد و براي ذخيره آن كـاراكتر در حافظـه، كـد
معادل آن ذخيره مي شود .در زير كد مربوط به هر كاراكتر را در رشته بالا آورده ايم :
“6” يونيكد 54 كه كد باينري معادل آن برابر 0000000000110110 است.
“5” يونيكد 53 كه كد باينري معادل آن برابر 0000000000110101 است.
“5” يونيكد 53 كه كد باينري معادل آن برابر 0000000000110101 است.
“3” يونيكد 51 كه كد باينري معادل آن برابر 0000000000110011 است.
“6” يونيكد 54 كه كد باينري معادل آن برابر 0000000000110110 است.
هر كدام از اين كدها براي ذخيره شدن به دو بايت فضا نياز دارند . پس براي ذخيره 5 رقم در قالب رشته به 80 بيت فضا نيـاز داريـم .براي ذخيره عدد بالا بايد متغيير را به صورت زير تعريف كنيم :
int intNumber = 65536;
مقدار اين متغيير به صورت يك عدد در قالب باينري در حافظه ذخيره ميشود و از آنجا كه هر عدد صحيح 32 بيت فضا را اشغال مـيكند، اين عدد هم 32 بيت فضا در حافظه اشغال ميكند كه بسيار كمتر از 80 بيت اشغال شده به وسيله رشته است .