LSB و MSB

در باینری، سمت راست‌ترین بیت و سمت چپ‌ترین بیت، بیت‌های بسیار مهم و قابل توجهی هستند. اولی LSB می‌باشد که مشخص‌کنندهٔ زوج یا فرد بودن عدد است. LSB سمت راست‌ترین بیت یک عدد باینری است. LSB مخفف کلمهٔ Least Significant Bit است و بمعنای «کم‌ارزش‌ترین بیت» می‌باشد. به LSB، بیت مرتبهٔ پایین (low-order bit) یا سمت راست‌ترین بیت (right-most bit) نیز گفته می‌شود. دومی MSB می‌باشد که در سیستم‌های مکمل یک و مکمل دو مشخص‌کنندهٔ مثبت یا منفی بودن (علامت عدد) عدد است. MSB سمت چپ‌ترین بیت یک عدد باینری است. MSB مخفف کلمهٔ Most Significant Bit است و بمعنای «پرارزش‌ترین بیت» می‌باشد. به MSB، بیت مرتبهٔ بالا (high-order bit) یا سمت چپ‌ترین بیت (left-most bit) نیز گفته می‌شود.

کم‌ارزش‌ترین بیت (LSB)

اگر LSB برابر با یک باشد، آن عدد فرد است و اگر برابر با صفر باشد، آن عدد زوج است. چون ارزش مکانی بیت‌های یک عدد باینری در دستگاه دسیمال توانی از 2 است و فقط LSB است که می‌تواند یک عدد فرد (یک) شود چون ارزش مکانی آن 20 است. مابقی بیت‌ها زوج هستند. در زبان‌های برنامه‌نویسی می‌توان از طریق باقی‌مانده یک عدد بر 2، زوج یا فرد بودن آن عدد را مشخص کرد. بدین شکل که اگر باقیمانده آن عدد بر 2 برابر صفر شد، آن عدد زوج است و اگر باقیمانده برابر یک شد، یعنی آن عدد فرد است. در زبان C می‌توان از اپراتور بیتی AND (&) برای مشخص کردن زوج یا فرد بودن یک عدد استفاده کرد. بدین‌گونه که AND هر عدد زوجی با عدد یک برابر با صفر و AND هر عدد فردی با یک برابر با یک است. به برنامه زیر دقت کنید:

int num;
scanf("%d", &num);

if(num % 2)
    printf("The number %d is ODD.\n", num);
else
    printf("The number %d is EVEN.\n", num);

برنامه بالا را به شکل زیر نیز می‌توان نوشت:

int num;
scanf("%d", &num);

if(num & 1)
    printf("The number %d is ODD.\n", num);
else
    printf("The number %d is EVEN.\n", num);

همانطور که می‌دانید و در Truth Table نیز مشخص است، در صورتی AND دو عدد برابر true (1) می‌شود که هر دو true (1) باشند. می‌خواهیم AND عددهای 355 و 356 با یک را بررسی کنیم:

355 (Decimal) = 101100011 (Binary)

101100011 (= 355 in Decimal)
&
000000001 (= 1)
---------
000000001 (= 1)
356 (Decimal) = 101100100 (Binary)

101100100 (= 356 in Decimal)
&
000000001 (= 1)
---------
000000000 (= 0)

همانطور که می‌دانید AND هر عددی با صفر برابر صفر است و چون تمام بیت‌ها به‌غیر از LSB با صفر AND می‌شوند، پس نتیجهٔ همهٔ آن‌ها صفر خواهد شد و فقط LSB است که با یک AND می‌شود و می‌تواند تعیین کننده باشد، که آن عدد زوج است یا فرد. اگر AND کم‌ارزش‌ترین بیت (LSB) با یک برابر یک شود یعنی آن عدد فرد است و اگر صفر شود یعنی آن عدد زوج است.

پرارزش‌ترین بیت (MSB)

در سیستم مکمل یک و مکمل دو، MSB تعیین‌کنندهٔ علامت عدد است. بدین‌گونه که اگر MSB برابر صفر باشد آن عدد می‌تواند یک عدد مثبت یا عدد صفر باشد؛ و اگر MSB برابر یک باشد آن عدد یک عدد منفی است. قبلا دربارهٔ اینکه چگونه MSB باعث منفی شدن عدد می‌شود، توضیحاتی داده شد که می‌توانید از طریق این لینک مطالعه کنید. البته توجه داشته باشید که اگر عدد مورد نظر بی‌علامت باشد (Unsigned)، آنگاه MSB تعیین‌کنندهٔ علامت نیست، بلکه مانند سایر بیت‌ها ارزش مکانی آن محاسبه می‌گردد.

معادل‌های LSB و MSB برای دستگاه‌های عددی به ترتیب LSD (Least Significant Digit) و MSD (Most Significant Digit) می‌باشد. به LSD، رقم مرتبهٔ پایین (low-order digit) یا سمت راست‌ترین رقم (right-most digit) نیز گفته می‌شود. به MSD، رقم مرتبهٔ بالا (high-order digit) یا سمت چپ‌ترین رقم (left-most digit) نیز گفته می‌شود.