বাইনারি সার্চ করতে গেলে যখন ইন্টিজার ওভার ফ্লো হয় তখন

int mid = (low + high) / 2;

এর পরিবর্তে

int mid = low + ((high - low) / 2);

অথবা

mid = ((unsigned int)low + (unsigned int)high)) >> 1;

ব্যবহার করা হয় । প্রথম দুটি কন্ডিশন বুঝলাম, কিন্তু mid = ((unsigned int)low + (unsigned int)high)) >> 1; এটা বুঝলাম না।

asked 06 Nov, 13:30

Rahat%20Hossain's gravatar image

Rahat Hossain
23610

edited 07 Nov, 05:29

Mosharraf%20Hosain's gravatar image

Mosharraf Hosain ♦
75618


>> হচ্ছে রাইট (ডান) শিফট অপারেটর। এটি সংখ্যার বাইনারি বিটগুলোকে এক ঘর ডানে সরিয়ে দেয়। বাইনারি বিটগুলো এক ঘর ডানে সরালে যে মান পাওয়া যায়, কোনো সংখ্যাকে ২ দিয়ে ভাগ করলে একই মান পাওয়া যায়। ভাগ করার চেয়ে রাইট শিফট অনেক দ্রুত চলে1, তাই বড় সংখ্যাকে ভাগ করার জন্য এটা ব্যবহার করা হয়। একইভাবে লেফট শিফট (<<) গুণের কাজ করে। শিফট অপারেটরের কাজের পদ্ধতি ও কয়েকটি ব্যবহার দেখানো হলো:

10 >> 1 = 5       1010 >> 1 = 0101  //left bit fills with 0;       10/2 = 5
11 >> 1 = 5       1011 >> 1 = 0101  //integer division;            11/2 = 5
06 << 1 = 12      0110 << 1 = 1100  //right bit fills with 0;       6*2 = 12
03 << 2 = 12      0011 << 2 = 1100  //shifted 2 bits;             3*2^2 = 12
01 << 3 = 8       0001 << 3 = 1000  //easy calculation of 2^n;      2^3 = 8

শিফট অপারেটর কেবল স্বাভাবিক সংখ্যায় (N = {1, 2, 3, 4, ...}) কাজ করবে। শূন্যকে শিফট করলে শূন্যই থাকবে। ঋণাত্মক সংখ্যার জন্য শিফটিং অসংজ্ঞায়িত (undefined)।

1. আধুনিক মেশিন ও কম্পাইলারে গুণ-ভাগ এমনভাবে ইমপ্লিমেন্ট করা থাকতে পারে যে এগুলো আসলে শিফট অপারেটরের মতোই দ্রুতগতির।

permanent link

answered 07 Nov, 06:22

Mosharraf%20Hosain's gravatar image

Mosharraf Hosain ♦
75618

Your answer
toggle preview

Follow this question

By Email:

Once you sign in you will be able to subscribe for any updates here

By RSS:

Answers

Answers and Comments

Markdown Basics

  • *italic* or _italic_
  • **bold** or __bold__
  • link:[text](http://url.com/ "title")
  • image?![alt text](/path/img.jpg "title")
  • numbered list: 1. Foo 2. Bar
  • to add a line break simply add two spaces to where you would like the new line to be.
  • basic HTML tags are also supported

Question tags:

×8
×6
×2
×1
×1

question asked: 06 Nov, 13:30

question was seen: 149 times

last updated: 07 Nov, 06:22