যদিও গৃহীত উত্তরটি উল্লেখ করে যে শেষ কথা স্মৃতি দৃষ্টিভঙ্গি থেকে একটি ধারণা। তবে আমি মনে করি না যে সরাসরি প্রশ্নের উত্তর দেয়।
কিছু উত্তর আমাকে বলে যে বিটওয়াইজ অপারেশনগুলি শেষের উপর নির্ভর করে না , এবং প্রসেসর অন্য কোনও উপায়ে বাইটগুলি উপস্থাপন করতে পারে। যাইহোক, এটি কথা বলে যা শেষ কথা বিমূর্ত হয়ে যায়।
কিন্তু যখন আমরা উদাহরণস্বরূপ কাগজে কিছুটা বিটওয়াসার গণনা করি, তখন প্রথম স্থানটিতে অন্তর্নিহিতাটি বর্ণনা করার দরকার নেই? বেশিরভাগ সময় আমরা অন্তর্নিহিতাকে নিখুঁতভাবে বেছে নিই।
উদাহরণস্বরূপ, ধরুন আমাদের কাছে এই জাতীয় কোডের একটি লাইন আছে
0x1F & 0xEF
কোনও কাগজে আপনি কীভাবে ফলাফলটি গণনা করবেন?
MSB 0001 1111 LSB
1110 1111
result: 0000 1111
সুতরাং এখানে আমরা গণনা করতে একটি বিগ এন্ডিয়ান ফর্ম্যাট ব্যবহার করি। আপনি একই ফলাফল গণনা করতে এবং পেতে লিটল এন্ডিয়ানও ব্যবহার করতে পারেন।
বিটিডব্লিউ, যখন আমরা কোডগুলিতে সংখ্যা লিখি, আমার মনে হয় এটি একটি বিগ এন্ডিয়ান ফর্ম্যাটের মতো। 123456
বা 0x1F
, উল্লেখযোগ্য সংখ্যাগুলি বাম থেকে শুরু হয় from
আবার, যখনই আমরা কাগজে কোনও মানটির বাইনারি ফর্ম্যাট লিখি, আমি মনে করি আমরা ইতিমধ্যে একটি এন্ডিয়েনেস বেছে নিয়েছি এবং আমরা স্মৃতি থেকে দেখতে দেখতে মানটি দেখছি।
সুতরাং প্রশ্নের পিছনে, একটি শিফট অপারেশনকে এলএসবি (কমপক্ষে উল্লেখযোগ্য বাইট) থেকে এমএসবি (সবচেয়ে উল্লেখযোগ্য বাইট) এ স্থানান্তর<<
হিসাবে বিবেচনা করা উচিত ।
তারপর যেমন প্রশ্নের উদাহরণ হিসাবে:
numb=1025
সামান্য endian
LSB 00000001 00000100 00000000 00000000 MSB
সুতরাং এলএসবি থেকে এমএসবিতে স্থানান্তরিত << 10
হবে 10bit
।
<< 10
লিটল এন্ডিয়ান ফর্ম্যাট ধাপে ধাপে তুলনা এবং ক্রিয়াকলাপ:
MSB LSB
00000000 00000000 00000100 00000001 numb(1025)
00000000 00010000 00000100 00000000 << 10
LSB MSB
00000000 00000100 00010000 00000000 numb(1025) << 10, and put in a Little Endian Format
LSB MSB
00000001 00000100 00000000 00000000 numb(1205) in Little Endian format
00000010 00001000 00000000 00000000 << 1
00000100 00010000 00000000 00000000 << 2
00001000 00100000 00000000 00000000 << 3
00010000 01000000 00000000 00000000 << 4
00100000 10000000 00000000 00000000 << 5
01000000 00000000 00000001 00000000 << 6
10000000 00000000 00000010 00000000 << 7
00000000 00000001 00000100 00000000 << 8
00000000 00000010 00001000 00000000 << 9
00000000 00000100 00010000 00000000 << 10 (check this final result!)
কি দারুন! ওপি বর্ণিত হিসাবে আমি প্রত্যাশিত ফলাফল পেয়েছি!
ওপিরা যে সমস্যাগুলি প্রত্যাশিত ফলাফল পায়নি তা হ'ল:
দেখে মনে হচ্ছে তিনি এলএসবি থেকে এমএসবিতে স্থানান্তরিত হননি।
লিটল এন্ডিয়ান ফর্ম্যাটে বিট স্থানান্তর করার সময়, আপনার উপলব্ধি করা উচিত (godশ্বরকে ধন্যবাদ আমি এটি উপলব্ধি করি) যে:
LSB 10000000 00000000 MSB << 1
হয়
LSB 00000000 00000001 MSB
, না
LSB 01000000 00000000 MSB
কারণ প্রতিটি ব্যক্তির জন্য 8bits
, আমরা আসলে এটি একটি MSB 00000000 LSB
বড় এন্ডিয়ান ফর্ম্যাটে লিখছি।
সুতরাং এটি মত
LSB[ (MSB 10000000 LSB) (MSB 00000000 LSB) ]MSB
সংক্ষেপে:
যদিও বিটওয়াইজ অপারেশনগুলি ব্লেব্লাব্ল্যাবাকে দূরে সরিয়ে দেওয়া হয় ... বলা হয়ে থাকে, যখন আমরা হাতের বিটওয়াইজ অপারেশনগুলি গণনা করি, তখনও কাগজে বাইনারি ফর্ম্যাটটি লিখতে গিয়ে আমরা কী অন্তর্নিহিতা ব্যবহার করছি তা আমাদের জানতে হবে। এছাড়াও আমাদের নিশ্চিত করতে হবে যে সমস্ত অপারেটর একই ধরণের ব্যবহার করে।
ওপি প্রত্যাশিত ফলাফলটি পায়নি কারণ সে স্থানান্তর ভুল করেছে।