ورود

View Full Version : مبتدی: عملکرد اپراتورهایی نظر >> یا ^



#root#
دوشنبه 25 فروردین 1393, 07:57 صبح
سلام
داشتم یه کتاب انگلیسی در مورد جاوا میخوندم این قسمت ها رو متوجه نشدم که این اپراتور ها دقیقا چی کار میکنن ، مثلا خروجی این ها :

System.out.println(~181);
System.out.println(26 & 183);
System.out.println(26 ^ 183);
System.out.println(26 | 183);

System.out.println(2 << 3);
System.out.println(16 >> 3);
System.out.println(-4 >> 1);
System.out.println(-4 >>> 1);

میشه اینا :

-182
18
173
191
16
2
-2
2147483646

در صورت امکان یه توضیح کوچولو در مورد هر کدوم بدید.

اصلاحیه : در عنوان تاپیک به جای نظیر نوشتم نظر.

cups_of_java
دوشنبه 25 فروردین 1393, 14:47 عصر
پاسخ تک تکشون رو نوشتم باز پاک شد و سایت هنگ کرد... شب دوباره می نویستم برات

cups_of_java
سه شنبه 26 فروردین 1393, 14:57 عصر
System.out.println(~181);
این اپراتور نات هستش. عدد 188 رو دودویی فرض کن و هر بیتش رو تک تک نفی کن...


System.out.println(26 & 183);
این اپراتور AND ریاضی هستش. اون دو تا عدد رو دودویی فرض کن و بیت به بیت بیتاشون رو با هم AND کن


System.out.println(26 ^ 183);
این هم XOR هستش که بیت به بیت اعداد رو XOR میکنه


System.out.println(26 | 183);
این هم OR ریاضی هست که بیت به بیت دو تا عدد رو با هم OR میکنه.


System.out.println(2 << 3);
و اما این شیفت به سمت چپ با حفظ علامت هستش بعنی دو رو دودویی فرض کن بعد 3 تا بیت از راست صفر وارد کن.

System.out.println(16 >> 3);
این شیفت به سمت راست با حفظ علامت هستش... 3 بیت از سمت چپ عدد 16 اضافه کن هر سه بیت صفر باشن چون عدد مثبته.

System.out.println(-4 >> 1);
اینم همون بالاییه با این تفاوت که عدد منفیه پس بیت های وارد شده از سمت چپ یک خواهند بود چون عدد منفیه

System.out.println(-4 >>> 1);
و اما این شبفت به سمت راست بدون حفظ علامت هست. بعنی همیشه از سمت چپ بیت صفر وارد میشه.