আসুন একবারে এটির একধাপ।
Integer.parseInt("11010100", 2)
- এটি হ'ল মান 212 This এটি উপায় দ্বারা, অযথা; আপনি শুধু লিখতে পারেন: 0b11010100
।
0b11010100 << 1
হিসাবে একই 0b110101000
, এবং 424 হয়।
এর পরে আপনি একটি বাইট সামনে ছুঁড়ে: (byte)(0b11010100 << 1)
। প্রথম 8 এর বাইরে বিটগুলি সমস্ত লপ্পড হয়ে যায়, যা 0b10101000 ছেড়ে যায়, যা -88। বিয়োগ, হ্যাঁ, কারণ জাভা বাইটে স্বাক্ষরিত।
আপনি যখন নিখরচায় এটি -88 ব্যাক আপ হিসাবে পূর্বাবস্থায় ফিরে যান, আপনি এটি কোনও ইনট মান হিসাবে নির্ধারিত করেন। এটি রয়ে গেছে -৮৮, যার অর্থ শীর্ষস্থানীয় সমস্ত বিটগুলি সমস্ত 1s।
অতএব, চূড়ান্ত মান হয় -88
।
আপনি যদি 168
পরিবর্তে দেখতে চান (যা হুবহু একই বিট, তবে স্বাক্ষরের পরিবর্তে স্বাক্ষরযুক্ত দেখানো হয়েছে), সাধারণ কৌশলটি হ'ল & 0xFF
প্রথম 8 থেকে 0 বাদে সমস্ত বিট সেট করে, সুতরাং ইতিবাচক সংখ্যার গ্যারান্টি দেয়:
byte b = (byte) (0b11010100 << 1);
System.out.println(b); // -88. It is not possible to print 168 when printing a byte.
int asUnsigned = b & 0xFF;
System.out.println(asUnsigned); // 168.
// or in one go:
System.out.println(((byte) (0b11010100 << 1)) & 0xFF); // 168
int
এস বাlong
এস- তে করা হয় ।