دوره های آموزشی آکادمی پی وی لرن (پروژه محور و ویژه بازار کار)



  • ۲۲
  • آبان

جلسه ۳۷ : عملگرهای بیتی در جاوا اسکریپت

  • دسته‌بندی‌ها :
جلسه ۳۷ : عملگرهای بیتی در جاوا اسکریپت
    • جزئیات
    • نوع محتواآموزش تصویری

      مقدمه

      با عرض سلام و وقت بخیر خدمت کاربران سایت پی وی لرن ، همانطور که می دانیم تمامی داده ها در سیستم های کامپیوتری پس از کامپایل به زبان ماشین یا ۰ و ۱ ترجمه می شوند، و اساس کار تمامی سیستم های رایانه ای با مقادیر بیتی است، بنابراین باید در هر زبان برنامه نویسی که فعالیت دارید، اطلاعاتی عمومی در مورد چگونگی کار با مقادیر و عملگرهای بیتی در آن زبان را داشته باشید. در این بخش نیز ما قصد داریم تا شما را با چگونگی کار با عملگرهای بیتی در جاوا اسکریپت آشنا کنیم.

      عملگرهای بیتی در جاوا اسکریپت

      در ادامه ی این مباحث به انواع عملگرهای بیتی در جاوا اسکریپت و عملکرد هر یک می پردازیم.

      لیست عملگرهای بیتی در جاوا اسکریپت

      عملگرنامتوضیحات
      &ANDاگر هر دو بیت ۱ باشند، نتیجه ۱ خواهد بود.
      |ORاگر فقط یکی از بیت ها ۱ باشد، نتیجه ۱ خواهد بود.
      ^XORاگر هر دو مقدار یکی باشند خروجی ۰ می شود.
      ~NOTیک بیت را نفض می کند.
      <<Zero fill left shiftتمام بیت ها را به سمت چپ شیفت می دهد.
      >>Signed right shiftتمام بیت ها را به سمت راست شیفت علامتدار می دهد.
      >>>Zero fill right shiftتمام بیت ها را به سمت راست شیفت می دهد.

      مثال:

      OperationResultSame asResult
      ۵ & 1۱۰۱۰۱ & 0001 ۰۰۰۱
      ۵ | ۱۵۰۱۰۱ | ۰۰۰۱ ۰۱۰۱
      ~ ۵۱۰ ~۰۱۰۱ ۱۰۱۰
      ۵ << 1۱۰۰۱۰۱ << 1 ۱۰۱۰
      ۵ ^ ۱۴۰۱۰۱ ^ ۰۰۰۱ ۰۱۰۰
      ۵ >> 1۲۰۱۰۱ >> 1 ۰۰۱۰
      ۵ >>> 1۲۰۱۰۱ >>> 1 ۰۰۱۰

      جاوا اسکریپت از اعداد ۳۲ بیتی استفاده می کند

      جاوا اسکریپت تا ۶۴ بیت اعداد اعشاری را ذخیره می کند، اما تمام عملیات بیتی بر روی اعداد ۳۲ بیتی انجام می شود.

      قبل از انجام عمل بیتی، جاوا اسکریپت اعداد را به ۳۲ بیت عدد صحیح تبدیل می کند.

      پس از انجام عمل بیتی، نتیجه به اعداد ۶۴ بیتی تبدیل می شود.

      مثالهای فوق از اعداد دودویی ۴ بیت بدون علامت استفاده می کنند. به همین دلیل  ~ ۵ بازگشتی ۱۰ را دارد.

      از آنجا که جاوا اسکریپت از ۳۲ بیت عدد صحیح استفاده می کند، مقدار ۱۰ بازگشت نخواهد شد.

      ۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۱۰۱ (۵)

      ۱۱۱۱۱۱۱۱۱۱۱۱۱۱۱۱۱۱۱۱۱۱۱۱۱۱۱۱۱۱۱۰۱۰ (~ ۵ = -۶)

      یک عدد صحیح علامتدار از بیت چپ به عنوان علامت منفی استفاده می کند.

      عملگر AND بیتی

      هنگامی که یک  AND بیتی ، بر روی یک مقدار بیتی انجام می شود، اگر هر دو بیت ۱ باشند، آنگاه ۱ را در خروجی برمی گرداند.

      مثال یک بیتی:

      عملیاتنتیجه
      ۰ & 0۰
      ۰ & 1۰
      ۱ & 0۰
      ۱ & 1۱

      مثال ۴ بیتی :

      عملیاتنتیجه
      ۱۱۱۱ & 0000۰۰۰۰
      ۱۱۱۱ & 0001۰۰۰۱
      ۱۱۱۱ & 0010۰۰۱۰
      ۱۱۱۱ & 0100۰۱۰۰

      عملگر بیتی OR

      وقتی که عملگر OR روی دو مقدار بیتی انجام می شود، در صورتیکه یکی از دو بیت ۱ باشد خروجی نیز ۱ خواهد بود.

      مثال یک بیتی :

      عملیاتنتیجه
      ۰ | ۰۰
      ۰ | ۱۱
      ۱ | ۰۱
      ۱ | ۱۱

      مثال ۴ بیتی :

      عملیاتنتیجه
      ۱۱۱۱ | ۰۰۰۰۱۱۱۱
      ۱۱۱۱ | ۰۰۰۱۱۱۱۱
      ۱۱۱۱ | ۰۰۱۰۱۱۱۱
      ۱۱۱۱ | ۰۱۰۰۱۱۱۱

      عملگر بیتی XOR

      وقتی که عملگر XOR روی دو مقدار بیتی انجام می شود، در صورتیکه یکی از دو بیت ۱ باشد خروجی نیز ۱ خواهد بود.

      مثال یک بیتی :

      عملیاتنتایج
      ۰ ^ ۰۰
      ۰ ^ ۱۱
      ۱ ^ ۰۱
      ۱ ^ ۱۰

      مثال ۴ بیتی :

      عملیاتنتایج
      ۰ ^ ۰۰
      ۰ ^ ۱۱
      ۱ ^ ۰۱
      ۱ ^ ۱۰

      عملگر بیتی AND

      اگر هر دو بیت ۱ باشند عملگر AND مقدار ۱ را بازمی گرداند، در غیر این صورت نتیجه ۰ خواهد بود.

      دهدهیباینری
      ۵۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۱۰۱
      ۱۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۱
      ۵ & 1۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۱ (۱)

      مثال : مثال عملگر AND
      خودتان امتحان کنید »

      عملگر بیتی OR

      اگر یکی از بیت ها ۱ باشد آنگاه عملگر OR در نتیجه ۱ را برمی گرداند.

      دهدهیباینری
      ۵۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۱۰۱
      ۱۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۱
      ۵ | ۱۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۱۰۱ (۵)

      مثال : عملگر OR
      خودتان امتحان کنید »

      عملگر XOR

      در عملگر بیتی XOR در صورتی که بیت ها با هم متفاوت باشند، نتیجه ۱ خواهد شد:

      دهدهیباینری
      ۵۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۱۰۱
      ۱۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۱
      ۵ ^ ۱۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۱۰۰ (۴)

      مثال : عملکرد xor
      خودتان امتحان کنید »

      عملگر بیتی NOT

      دهدهیباینری
      ۵۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۱۰۱
      ۱۱۱۱۱۱۱۱۱۱۱۱۱۱۱۱۱۱۱۱۱۱۱۱۱۱۱۱۱۰۱۰ (-۶)

      مثال : عملگر بیتی NOT
      خودتان امتحان کنید »

      عملگر بیتی شیفت به چپ (>>)

      دراین عملگر به تعداد مشخص شده ۱ یا چند بیت ۰ در سمت راست قرار گرفته و اضافه ی بیت ها از سمت چپ حذف می شوند.

      دهدهیباینری
      ۵۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۱۰۱
      ۵ << 1۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۱۰۱۰ (۱۰)

      مثال : شیفت به چپ باینری
      خودتان امتحان کنید »

      عملگر بیتی شیفت به راست(<<)

      دراین عملگر به تعداد مشخص شده از سمت چپ ترین بیت در سمت چپ کپی شده و اضافه ی بیت ها از سمت راست حذف می شوند.

      دهدهیباینری
      ۱۱۱۱۱۱۱۱۱۱۱۱۱۱۱۱۱۱۱۱۱۱۱۱۱۱۱۱۱۰۱۱
      -۵ >> 1۱۱۱۱۱۱۱۱۱۱۱۱۱۱۱۱۱۱۱۱۱۱۱۱۱۱۱۱۱۱۰۱ (-۳)

      مثال : شیفت به راست علامتدار
      خودتان امتحان کنید »

      شیفت به راست بدون علامت (<<<)

      دراین عملگر به تعداد مشخص شده ۱ یا چند بیت ۰ در سمت چپ قرار گرفته و اضافه ی بیت ها از سمت راست حذف می شوند:

      دهدهیباینری
      ۵۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۱۰۱
      ۵ >>> 1۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۱۰ (۲)

      مثال : بیت راست بدون علامت
      خودتان امتحان کنید »

      اعداد باینری

      اعداد دودویی تنها با یک مجموعه بیتی قابل درک است:

      معادل باینریمقدار دهدهی
      ۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۱۱
      ۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۱۰۲
      ۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۱۰۰۴
      ۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۱۰۰۰۸
      ۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۱۰۰۰۰۱۶
      ۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۱۰۰۰۰۰۳۲
      ۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۱۰۰۰۰۰۰۶۴

      تنظیم چند بیت نشان دهنده الگوی باینری است:

      معادل باینریمقدار دهدهی
      ۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۱۰۱۵ (۴ + ۱)
      ۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۱۱۰۱۱۳ (۸ + ۴ + ۱)
      ۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۱۰۱۱۰۱۴۵ (۳۲ + ۸ + ۴ + ۱)

      اعداد باینری جاوا اسکریپت در فرمت مکمل دو ذخیره می شوند.

      این به این معنی است که اعداد منفی NOT بیتی اعداد مثبت ۱ هستند:

      معادل دو دوییمقدار دهدهی
      ۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۱۰۱۵
      ۱۱۱۱۱۱۱۱۱۱۱۱۱۱۱۱۱۱۱۱۱۱۱۱۱۱۱۱۱۰۱۱
      ۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۱۱۰۶
      ۱۱۱۱۱۱۱۱۱۱۱۱۱۱۱۱۱۱۱۱۱۱۱۱۱۱۱۱۱۰۱۰
      ۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۱۰۱۰۰۰۴۰
      ۱۱۱۱۱۱۱۱۱۱۱۱۱۱۱۱۱۱۱۱۱۱۱۱۱۱۰۱۱۰۰۰-۴۰

      تبدیل دهدهی به باینری

      مثال : تبدیل دهدهی به باینری
      خودتان امتحان کنید »

      تبدیل باینری به دهدهی

      مثال : تبدیل باینری به دهدهی
      خودتان امتحان کنید »

      کلام آخر

      عملیات بیتی و دودویی تقریبا در تمام زبان های برنامه نویسی انجام می شود و برنامه نویسان با آن به عنوان زبان کامپیوتر سر و کار دارند، جاوا اسکریپت نیز از این قاعده مستثنا نیست، از این رو مباحث این بخش را به مرور عملگرهای بیتی در جاوا اسکریپت اختصاص دادیم.

      QR:  جلسه ۳۷ : عملگرهای بیتی در جاوا اسکریپت
      به اشتراک بگذارید


      دیدگاه کاربران
      1. تصویر کاربر
      2. تصویر کاربر