আপনি কীভাবে হেক্সাডেসিমাল বা অষ্টাল মধ্যে একটি পূর্ণসংখ্যা ধ্রুবক সংজ্ঞায়িত করতে পারেন তার অনুরূপ, আমি এটি বাইনারি করতে পারি?
আমি স্বীকার করি এটি একটি খুব সহজ (এবং বোকা) প্রশ্ন is আমার গুগল অনুসন্ধানগুলি খালি আসছে।
আপনি কীভাবে হেক্সাডেসিমাল বা অষ্টাল মধ্যে একটি পূর্ণসংখ্যা ধ্রুবক সংজ্ঞায়িত করতে পারেন তার অনুরূপ, আমি এটি বাইনারি করতে পারি?
আমি স্বীকার করি এটি একটি খুব সহজ (এবং বোকা) প্রশ্ন is আমার গুগল অনুসন্ধানগুলি খালি আসছে।
উত্তর:
সুতরাং, জাভা এসই 7 প্রকাশের সাথে, বাইনারি স্বাক্ষরটি বাক্সের বাইরে স্ট্যান্ডার্ড। বাইনারি সম্পর্কে আপনার যদি ভাল ধারণা থাকে তবে সিনট্যাক্সটি বেশ সোজা এবং সুস্পষ্ট:
byte fourTimesThree = 0b1100;
byte data = 0b0000110011;
short number = 0b111111111111111;
int overflow = 0b10101010101010101010101010101011;
long bow = 0b101010101010101010101010101010111L;
এবং বিশেষত শ্রেণি স্তরের ভেরিয়েবলগুলি বাইনারি হিসাবে ঘোষণার পয়েন্টে, বাইনারি স্বরলিপি ব্যবহার করে কোনও স্ট্যাটিক ভেরিয়েবল শুরু করার ক্ষেত্রে একেবারেই সমস্যা নেই:
public static final int thingy = 0b0101;
খুব বেশি ডেটা দিয়ে সংখ্যাগুলি উপচে না পড়তে কেবল সতর্ক হন, অন্যথায় আপনি একটি সংকলক ত্রুটি পাবেন:
byte data = 0b1100110011; // Type mismatch: cannot convert from int to byte
এখন, আপনি যদি সত্যিই অভিনবতা পেতে চান তবে আপনি জাভা in-তে সেই অন্যান্য ঝরঝরে নতুন বৈশিষ্ট্যটিকে আন্ডারস্কোর সহ সংখ্যাসূচক আখ্যায়িত হিসাবে একত্রিত করতে পারেন। আক্ষরিক আন্ডারস্কোর সহ বাইনারি স্বরলিপিগুলির এই অভিনব উদাহরণগুলি একবার দেখুন:
int overflow = 0b1010_1010_1010_1010_1010_1010_1010_1011;
long bow = 0b1__01010101__01010101__01010101__01010111L;
এখন কি খুব সুন্দর এবং পরিষ্কার নয়, উচ্চ পাঠযোগ্য বলে উল্লেখ করা যায় না?
আমি এই কোড স্নিপেটগুলি টেক্সার উপর থের সার্ভারসাইটে লিখেছিলাম এমন একটি নিবন্ধ থেকে টেনেছি। আরও বিশদ জন্য এটি নির্দ্বিধায় দেখুন:
জাভা 7 এবং বাইনারি নোটেশন: ওসিপি জাভা প্রোগ্রামার (ওসিপিজেপি) পরীক্ষায় দক্ষতা অর্জন করছে
জাভা 7 এ:
int i = 0b10101010;
জাভার পুরানো সংস্করণগুলিতে কোনও বাইনারি লিটারাল নেই (বিকল্পের জন্য অন্যান্য উত্তর দেখুন)।
_
যে ক্রমটি আরও পঠনযোগ্য করার জন্য অক্ষরগুলি থাকতে পারে: int i = 0b1010_1010_0011;
জাভাতে কোনও বাইনারি আক্ষরিক নেই, তবে আমি মনে করি আপনি এটি করতে পারেন (যদিও আমি বিষয়টি দেখতে পাচ্ছি না):
int a = Integer.parseInt("10101010", 2);
এড সোয়াংগ্রেনের উত্তর
public final static long mask12 =
Long.parseLong("00000000000000000000100000000000", 2);
ঠিকভাবে কাজ করে. আমি long
পরিবর্তে ব্যবহার করেছিলাম int
এবং বিট মাস্ক হিসাবে সম্ভাব্য ব্যবহারগুলি স্পষ্ট করতে মডিফায়ারগুলি যুক্ত করেছি। যদিও এই পদ্ধতির সাথে দুটি অসুবিধা রয়েছে।
আমি বিকল্প পদ্ধতির পরামর্শ দিতে পারি
public final static long mask12 = 1L << 12;
এই অভিব্যক্তিটি স্পষ্ট করে তোলে যে দ্বাদশ বিটটি 1 (গণনাটি 0 থেকে শুরু হয়, ডান থেকে বাম দিকে); এবং যখন আপনি মাউস কার্সার নিয়ে যান, তখন টুলটিপ
long YourClassName.mask12 = 4096 [0x1000]
Eclipse এ প্রদর্শিত হবে। আপনি আরও জটিল স্থির হিসাবে সংজ্ঞা দিতে পারেন:
public final static long maskForSomething = mask12 | mask3 | mask0;
বা স্পষ্টভাবে
public final static long maskForSomething = (1L<<12)|(1L<<3)|(1L<<0);
চলকটির মানটি maskForSomething
এখনও বিকাশের সময়ে গ্রহপসে পাওয়া যাবে।
ধ্রুবকগুলি ঘোষণা করুন:
public static final int FLAG_A = 1 << 0;
public static final int FLAG_B = 1 << 1;
public static final int FLAG_C = 1 << 2;
public static final int FLAG_D = 1 << 3;
এবং তাদের ব্যবহার
if( (value & ( FLAG_B | FLAG_D )) != 0){
// value has set FLAG_B and FLAG_D
}
গুগলে "জাভা লিটারালস সিনট্যাক্স" অনুসন্ধান করুন এবং আপনি কিছু এন্ট্রি নিয়ে এসেছেন।
এখানে একটি অষ্টাল সিনট্যাক্স রয়েছে (0 এর সাথে আপনার সংখ্যাটি উপসর্গ), দশমিক সিনট্যাক্স এবং একটি "0x" উপসর্গ সহ হেক্সাডেসিমাল সিনট্যাক্স। কিন্তু বাইনারি স্বরলিপি জন্য কোন বাক্য গঠন।
কিছু উদাহরণ:
int i = 0xcafe ; // hexadecimal case
int j = 045 ; // octal case
int l = 42 ; // decimal case
byte b = 0b01000001
(আরও ভাল প্রস্তুতির জন্য byte b = 0b0100_0001
)।
আপনি যদি প্রচুর বাইনারি নিয়ে আশপাশ করতে চান তবে আপনি কিছু ধ্রুবককে সংজ্ঞায়িত করতে পারেন:
public static final int BIT_0 = 0x00000001;
public static final int BIT_1 = 0x00000002;
ইত্যাদি
বা
public static final int B_00000001 = 0x00000001;
public static final int B_00000010 = 0x00000002;
public static final int B_00000100 = 0x00000004;