(برنامه نویسی java) تعداد دفعات مقدار num و value در محیط جاوا (رباتیک _ الکترونیک)

پژوهشگر و نویسنده: (  افشین رشید )

نکته: در ایجا num مشخص کننده تعداد مکانهایی است که بیـت هـای موجـود در value بایـد کلیـه بیـت هـای موجـود در یـک مقـدار مشخص را>> به چپ انتقال یابند . بدین ترتیب بتعداد مکانهایی که در num مشخص شده بطرف چپ حرکت می دهـد .

 بـرای هـر بار حرکت به چپ ، بیت  order-high بیش از حد مجاز منتقل شده و از دست خواهد رفت و یک صفردر طرف راست مقـدار، جایگزین می شود . بدین ترتیب هنگامیکه یک حرکت به چپ روی یک عملوند int عمل می کند ، بیت های گذشـته از مکـان 31 از دست خواهند رفت . اگر عملوند یک long باشد، بیت ها پس از گذشتن از مکان 63 از دست میروند. هنگامیکه مقادیر byte و shortو را انتقال می دهید ، ارتقائ خودکار انواع در جاوا نتایج غیر منتظره ای ایجاد می کند . حتما" مـی دانیـد کـه هنگـام ارزشـیابی عبارات ، مقادیر byte وshort وبه int ارتقائ می یابند. بعلاوه جواب چنین عبارتی از نوع int خواهـد بـود .بنـابراین حاصـل یـک حرکت به چپ روی مقادیرbyte وshort و یک int خواهد بود و بیت های انتقال یافته به چپ تا زمانیکه از مکان بیت 31 نگذرند، از دســـــت نمـــــی رونـــــد . عـــــلاوه بـــــراین ، یـــــک مقـــــدار منفـــــی byte وshort و هنگامی کـــــه به int ارتقائ می یابد ، بسط علامت پیدا می کند . بنابراین بیت های بیش از حد مجاز با بیت 1 پر می شوند . بخاطراین دلایـل ، انجـام یک حرکت به چـپ روی byte وshort مسـتلزم آن اسـت کـه از بایـت هـای بـیش از حـد مجـاز در جـواب int دسـت بکشـید . بعنوان مثال ، اگریک مقدار byte را حرکت به چپ بدهید ، آن مقدار ابتدا به نوعint تبدیل شده و سپس انتقال خواهد یافت . باید سه بایـت بـالایی حاصـل را از دسـت بدهیـد . اگـر بخواهیـد حاصـل یـک مقـدار byte انتقـال یافتـه را بدسـت آوریـد . بایـد سـه بایت بالایی حاصل را از دست بدهید . آسان ترین روش برای انجام اینکار استفاده از تبدیل cast و تبدیل جواب به نوع byte است.

از آنجاییکه هر بار حرکت به چپ تاثیر دو برابر سازی مقدار اصلی را دارد برنامه نویسان اغلب از این خاصیت بجای دو برابر کردن استفاده می کنند . اما باید مراقب باشید . اگریک بیت 1 را به مکان بیت بیش از حد مجاز (31 یا 63) منتقل کنید ، مقدار فوق منفی خواهد شد.