آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

این نمونه دستور format چطور کار می کند ؟

مجتبی یگانه  12 سال پیش  12 سال پیش
0 0

 String hexColor = String.format("#X", (0xFFFFFF & color));

1 - color متغییر خودمه که یه مقدار int که مربوط به یک رنگه توش ذخیره میشه

خروجی کد hex رنگ int color هستش ! اما چطور کار میکنه ؟

0 0
یعنی شما یه رنگ رو به شکل int میدی بعد تبدیل به hex میشه؟ (12 سال پیش)
0 0
شاید بجای x# باید x% باشه؟ (12 سال پیش)
0 0
کد خروجی درست میده :) ، فقط میخوام ببینم که چطور کار میکنه (12 سال پیش)
 برای این سوال 4 پاسخ وجود دارد.
پاسخ به سوال 
مقدسیان  12 سال پیش
0 0

من هنوز جاوا رو خوب یاد نگرفتم. ولی این خط کد ظاهرا دو عمل انجام میده. عمل اول مقایسه رنگ شما با رنگ مرجع که به صورت ffffff مشخص شده. پیشوندشم تبدیلش میکنه به hex. بعد مقایسه به شکل باینری با & باینری انجام میشه. حالا چرا مقایسه میشه، نمیدونم!؟ عمل دوم هم فرمت کردن نتایج به شکل hex هست. حالا شما به حرف من استناد نکنید تا ببینیم بقیه چه پاسخی میدن.

0 0
کاربرد عملگر & رو میدونید ؟ (12 سال پیش)
پاسخ به سوال 
مقدسیان  12 سال پیش
0 0

مثلا فرض کن دوتا باینری داریم

01101010 =a 

10101000=b

در نتیجه  b & a میشه 00101000

یعنی وقتی در دو باینری،اعداد متناظر هر دو 1 باشند حاصلشون میشه 1. در غیر این صورت میشه 0

0 0
ممنون :) ، فکر کنم بهش میگن xor با این توضیحات (12 سال پیش)
0 0
اما 0xFFFFFF هگز هستش چون با 0x شروع شده ، اینطور نیست ؟ به نظرت اول تبدیل میکنه به bin ? (12 سال پیش)
پاسخ به سوال 
مقدسیان  12 سال پیش
0 0

در عملگر  xor  یا باید عملوند اول صحیح باشه یا دومی تا جواب true بشه. و اگر هر دو صحیح باشند یا هر دو غلط باشند جواب میشه false .  در  قیاس باینری عدد 1 یعنی صحیح و صفر یعنی غلط. حالا اگر در & ارقام متناظر هر دو یک باشند جواب حاصل هم 1 میشه. در غیر این صورت میشه صفر.

در مورد نکته دوم که گفتی، فکر میکنم همینطوره؛باید خودکار به باینری تبدیل بشه. چون یکی از عملوند ها عدد صحیح و یکه دیگه هگزه.

پاسخ به سوال 
uncocoder  12 سال پیش
+1 0

در کل ما چیزی به فرمت Binary, Hex و ... نداریم و هیچ چیز تبدیل به چیز دیگری نمیشه. شما وقتی میگید 11111111 در مبانی 2 یعنی همون FF در مبنای هگز یعنی همون 255 در مبنای دسیمال و ... . برای Eclipse یا Compiler فرقی نمی کنه که شما یک عدد رو در فرمت Hex بنویسید یا Bin یا Dec و مهم هست که مقدار اون عدد چیه نه نوع نوشتارش. مثلاً «یک» و «1» هیچ فرقی با هم از نظر ارزش نداره و فقط نوع نوشتنش فرق می کنه.

کلاً جدول زیر رو بدونید:

        and  or xor
a b a&b a|b a^b
--- --- --- --- ---
0 0 0 0 0
0 1 0 1 1
1 0 0 1 1
1 1 1 1 0

حالا وقتی دو تا عدد با هم & می شن به سر تک تک بیت های بین اونها این محاسبه انجام می گیره و تک تک بیت های خروجی رو تشکیل می ده. پس مثلاً & شدن یک چیزی مثل 183 دسیمال با 0xFFFFFF میشه:

(183)10 = (10110111)2
(0xFFFFFF)16 = (111111111111111111111111)2
=>
111111111111111111111111 &
000000000000000010110111 =
000000000000000010110111

پس می بینید که حاصل میشه همون مقداری که با 0xFFFFFF اند شده و فرقی نمی کنه. پس لزومی هم نداره که اون عبارت نوشته بشه و این عبارت کافیه:

String hexColor = String.format("#X", color);

در ضمن درستش هم باید باشه:

String hexColor = String.format("%#X", color);

تست کنید و نتیجه رو اطلاع بدید لطفاً.

0 0
کد int رنگ FF0000 # رو به صورت 0XFFFF0000 برگردوند با حذف 0x اول FFFF0000 ، جواب درسته اما من یه چیز دیگه فهمیدم ! دقت رنگ int شده بسیار بالاست و آلفا رو هم محاسبه میکنه ! ، ممنون از توضیحات بی نقص شما :) (12 سال پیش)
0 0
راستی استاد توی گرد کردن هم % رو داشتیم ، کاربردش چیه ؟ (12 سال پیش)

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