View Full Version : مبتدی: نوشتن متد
Naderi94
جمعه 28 آبان 1395, 20:39 عصر
سلام دوستان!
یه سوال دارم ممنون میشم جواب بدید.
سوال(به زبان جاوا): متدی بنویسد که مشخص کند آیا پارامترش توانی از 2 است؟
مثلا: 1و2و8و64 توانی از 2 هستن، ولی 3و6 نیستن.
ممنون
[younes]
شنبه 29 آبان 1395, 00:27 صبح
public class power{
public static void main(String[] arg){
is_power_of_two(4);
}
private static void is_power_of_two(int x){
boolean p = (x != 0) && ((x & (x - 1)) == 0);
if(p){
System.out.println( x+" is power of two");
}else{
System.out.println(x+"is not power of two");
}
}
}
Naderi94
شنبه 29 آبان 1395, 20:03 عصر
سلام! فقط یه سوال این is_power_of_two و این ( 0 == (x & (x - 1))) را میشه توضیح بدید؟
واقعا خیلی ممنون
[younes]
شنبه 29 آبان 1395, 21:47 عصر
هر x که توان دو باشد x-1 حاصلی به دست میدهد که با & آن دو عدد صفر به دست می آید. (مثلا عدد چهار که توان دو است درمبنای دو میشود= 0100). و اگر یک عدد از آن کم کنیم 1-4 در مبنای دو میشود (0011).
عملگر AND بیتی، دو مقدار دودویی با طول مساوی دریافت کرده و بر روی هر جفت بیت متناظر، عملیات عطف منطقی را انجام میدهد. نتیجه وقتی ۱ میشود که اولین بیت و دومین بیت هر دو با هم ۱ باشند. در غیر این صورت نتیجه صفر است. با توجه به مقادیر باینری دو عدد 4 و 3 نتیجه ی کلی صفر خواهد بود و این اثبات میکند که 4 توان دو است. البته این در مورد اعداد مثبت و غیر از صفر صدق میکند.....
0100
&
0011
-----------
0000
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.