C# بٹ وائز لیفٹ شفٹ (<<) آپریٹر

C B Wayz Lyf Shf Apry R



C# پروگرامنگ میں، ہم بٹ وائز آپریٹرز کو بٹ لیول آپریشنز کرنے کے لیے استعمال کر سکتے ہیں۔ بٹ لیول کیلکولیشن CPU میں اس وقت کی جاتی ہے جب ہم ریاضی کی کارروائیاں کرتے ہیں جیسے کہ اضافہ، گھٹاؤ، ضرب، یا تقسیم۔ ہم C# پروگرامنگ میں Bitwise آپریشن بھی کر سکتے ہیں اور یہ عمل آسان ہے۔ بٹ وائز آپریٹرز دی گئی قدر پر آپریشن کرتے ہیں۔ شفٹ کرنے کے لیے بٹس کی تعداد بھی بتائی گئی ہے۔ C# زبان میں چھ بٹ وائز آپریٹرز ہیں، ان میں سے دو شفٹ آپریٹرز ہیں۔

ہماری بحث کا موضوع شفٹ آپریٹرز کے بارے میں ہے۔ Bitwise بائیں شفٹ آپریٹر (<<) کو تفصیل سے بیان کیا جائے گا۔ شفٹ آپریٹر، جیسا کہ نام سے پتہ چلتا ہے، بٹ کو مخصوص پوزیشن سے بائیں یا دائیں طرف شفٹ کرتا ہے۔ بٹ وائز بائیں شفٹ آپریٹر (<<) کا استعمال کرتے ہوئے قدر کو بٹس کی مخصوص تعداد کے ذریعہ بائیں طرف منتقل کیا جاتا ہے۔ بائیں شفٹ آپریٹرز ان پٹ کو صرف int (انٹیجر)، uint (غیر دستخط شدہ عدد)، طویل (لمبا عدد)، اور ulong (غیر دستخط شدہ طویل عدد) میں لیتے ہیں۔ جب بائیں آپرینڈ کا تعلق مختلف قسم سے ہوتا ہے، تو اسے عددی قسم میں تبدیل کر دیا جاتا ہے۔ نتیجے کی قدر کی ڈیٹا کی قسم 32 بٹس کی حد برقرار رکھتی ہے۔ آؤٹ پٹ اس سے بڑا نہیں ہو سکتا۔ Bitwise آپریٹرز کوڈ کو موثر اور تیز تر بناتے ہیں۔ اس کے علاوہ، وہ زیادہ درستگی اور صحت سے متعلق پیش کرتے ہیں.

نحو:

Operand_1 << Operand_2







پہلی 'Operand_1' وہ قدر ہے جو بائیں سے شفٹوں کی تعداد میں منتقل ہوتی ہے جو 'Operand_2' پر مشتمل ہوتی ہے۔ علامت << بائیں طرف 'اوپرینڈ_1' کو تبدیل کرتا ہے۔



مثال 1:

بٹ وائز لیفٹ شفٹ آپریٹر (<<) اس پروگرام میں انٹیجر ویلیوز پر لاگو ہوتا ہے۔



سسٹم کا استعمال کرتے ہوئے؛

کلاس پروگرام_1
{
جامد باطل مین ( ) {
int Value_0 = 3. 4 ;
int ویلیو_1 = 65 ;
int res = قدر_0 << قدر_1;
کنسول۔لکھیں۔ ( 'بائیں شفٹ ہے  ' ) ;
کنسول۔لکھیں۔ ( res ) ;
}
}

پہلے بیان میں دو عددی قسم کے متغیرات کا اعلان اور آغاز ہوتا ہے۔ پہلا متغیر 'ویلیو_0' ہے اور دوسرا متغیر 'ویلیو_1' ہے۔ ان میں ذخیرہ شدہ اقدار '34' اور '65' ہیں۔ ہم نے بائیں شفٹ آپریٹر (<<) کا استعمال کرتے ہوئے ویلیو 34 کو شفٹ کیا۔ پھر، ہم نتیجہ کو محفوظ کرنے کے لیے ایک اور متغیر کا اعلان کرتے ہیں جس میں عددی ڈیٹا کی قسم ہوتی ہے۔ یہاں، ہم بائیں شفٹ آپریٹر (<<) کو ویلیو_0 << ویلیو_1 کے طور پر استعمال کرتے ہیں۔ یہ آپریٹر بائیں بائیں آپرینڈ کی بائیں قدر کو دوسرے آپرینڈ میں دی گئی قدر سے شفٹ کرتا ہے۔ 'Res' شفٹ آپریٹر کے آؤٹ پٹ کو اسٹور کرتا ہے۔ اس کے بعد، ہم متن کو پرنٹ کرنے کے لیے Console.Write() کا طریقہ کہتے ہیں 'بائیں شفٹ ہے' اور نتیجے کی قیمت جو ٹرمینل پر 'res' میں محفوظ ہوتی ہے۔





مثال 2:

آئیے بائیں شفٹ آپریٹر کو غیر دستخط شدہ عددی اقدار پر استعمال کریں اور دیکھیں کہ وہ کس طرح آؤٹ پٹ تیار کرتے ہیں۔



سسٹم کا استعمال کرتے ہوئے؛

کلاس پروگرام_2
{
جامد باطل مین ( ) {
uint Val_0 = 4435 ;
int  Val_1 = 64 ;
uint نتیجہ = Val_0 << Val_1;
کنسول۔لکھیں۔ ( 'بائیں شفٹ ہے' ) ;
کنسول۔لکھیں۔ ( نتیجہ ) ;
}
}

یہاں، ہم بائیں شفٹ آپریٹر کو غیر دستخط شدہ عددی قسم کی قدر پر لاگو کرتے ہیں۔ ایک چیز جس کا آپ کو خیال رکھنا ضروری ہے وہ یہ ہے کہ دوسرا آپرینڈ ایک عددی قسم کی قدر کا ہونا چاہیے کیونکہ کمپائلر شفٹ کرنے کے لیے صرف ایک عددی قدر لیتا ہے۔

static void Main() فنکشن کو کال کرنے کے بعد، ہم دو متغیرات کا اعلان کرتے ہیں - جن میں سے ایک غیر دستخط شدہ عددی قدر 'Val_0' ہے اور دوسری عددی قدر 'Val_1' ہے۔ اس کے بعد، ہم ایک اور غیر دستخط شدہ عدد متغیر کی وضاحت کرتے ہیں جو 'نتیجہ' ہے تاکہ غیر دستخط شدہ عدد کو بائیں منتقل کرنے کے بعد نتیجے کی قدر کو برقرار رکھا جاسکے۔ ہم نتیجہ کو عددی قسم کے متغیر میں ذخیرہ نہیں کر سکتے کیونکہ بائیں شفٹ کرنے کے بعد نتیجہ ایک غیر دستخط شدہ قدر ہے۔ 'Val_0 << Val_1' بیان بائیں بائیں آپرینڈ کو شفٹ کرتا ہے جو ایک غیر دستخط شدہ عددی قدر ہے۔ یہ ایک غیر دستخط شدہ عددی قدر پیدا کرتا ہے۔ آخر میں، Console.Write() طریقہ استعمال کرتے ہوئے نتیجہ کو آؤٹ پٹ اسکرین پر 'The left shift is' کے متن کے ساتھ دکھائیں:

مثال 3:

اس مثال میں، ہم Bitwise بائیں شفٹ آپریٹر (<<) کو طویل عددی اقدار پر استعمال کرنے کے مختلف طریقوں کے بارے میں بات کریں گے۔

سسٹم کا استعمال کرتے ہوئے؛

کلاس پروگرام_3
{
جامد باطل مین ( ) {
لمبا نمبر_0 = چار پانچ ;
لمبا نمبر_1 = 5 ;

کنسول۔لکھیں۔ ( 'لمبی کی بائیں شفٹ ہے' ) ;
Console.WriteLine ( نمبر_0 << 3 ) ;
کنسول۔لکھیں۔ ( 'لمبی کی بائیں شفٹ ہے' ) ;
کنسول۔لکھیں۔ ( نمبر_0 << Convert.ToInt16 ( نمبر_1 ) ) ;
}
}

دو طویل عددی قسم کے متغیرات، 'number_0' اور 'number_1' کی ابتداء پہلے بیان میں کی گئی ہے۔ ٹرمینل پر 'بائیں شفٹ آف لانگ ہے' اور نتیجہ کی نمائندگی کرنے کے لیے Console.Write() فنکشن کو استعمال کریں۔ یہاں، ہم بائیں شفٹ آپریٹر (<<) کو اس طرح لاگو کرتے ہیں کہ ہم پہلے آپرینڈ کو پہلے متغیر کے طور پر اور دوسرے آپرینڈ کو انٹیجر ویلیو کے طور پر رکھتے ہیں۔ کمپائلر بائیں طرف پہلا آپرینڈ شفٹ کرتا ہے جو کہ 'number_0' by 3 ہے اور نتیجہ دکھاتا ہے۔ اگلے بیان میں، Console.Write() طریقہ استعمال کرکے اسکرین پر ایک اور پیغام پرنٹ کریں۔ یہاں، ہم پہلے متغیر، 'number_0' کو پہلے آپرینڈ کے طور پر اور دوسرے متغیر، 'number_1' کو دوسرے آپرینڈ کے طور پر استعمال کرتے ہیں۔ دوسرا آپرینڈ ایک عددی قسم کی قدر کا ہونا چاہیے۔ ہم Convert.ToInt16() فنکشن کا استعمال کرتے ہوئے دوسرے متغیر 'number_1' کو عددی قسم میں ٹائپ کرتے ہیں۔ پھر، کنسول پر نتیجہ ظاہر کریں:

مثال 4:

یہ کوڈ دکھاتا ہے کہ ہم غیر دستخط شدہ لانگ آپریٹر پر بائیں شفٹ کرنے کے بعد کس طرح ایک عدد کو اقدار تفویض کر سکتے ہیں۔

سسٹم کا استعمال کرتے ہوئے؛

کلاس پروگرام_4
{
جامد باطل مین ( ) {
سر نمبر_0 = 445 ;

کنسول۔لکھیں۔ ( 'الونگ کی بائیں شفٹ ہے' ) ;
Console.WriteLine ( نمبر_0 << 8 ) ;
کنسول۔لکھیں۔ ( 'الونگ کی بائیں شفٹ ہے' ) ;
Console.WriteLine ( نمبر_0 << 16 ) ;
کنسول۔لکھیں۔ ( 'الونگ کی بائیں شفٹ ہے' ) ;
Console.WriteLine ( نمبر_0 << 32 ) ;

}
}

سب سے پہلے، ایک غیر دستخط شدہ طویل عددی قسم کے متغیر کا اعلان کریں جو کہ 'number_0' ہے۔ اس کے بعد، Console.Write() طریقہ کو کال کرکے ٹرمینل پر 'ulong کی بائیں شفٹ ہے' کا متن دکھائیں۔ ہم 'نمبر_0' کی بائیں شفٹ کو 8 کی عددی قدر سے تلاش کریں گے اور ہمیں نتیجہ کہیں بھی ذخیرہ کرنے کی ضرورت نہیں ہے۔ Console.WriteLine() فنکشن کنسول پر نتیجہ پرنٹ کرتا ہے۔ اس عمل کو دو بار دہرائیں اور دوسرے آپرینڈ کی اقدار کو تبدیل کریں۔ ایسا کرنے سے، ہم ایک طویل غیر دستخط شدہ عددی قسم کی قدر کی بائیں شفٹ کو تلاش کر سکتے ہیں۔ لیکن اگر ہم نتیجہ والی قدر کو کسی متغیر میں محفوظ کرنا چاہتے ہیں تو ہمیں یہ خیال رکھنا چاہیے کہ نتیجہ وہی ہے جو پہلے آپرینڈ کا ہے۔ Console.Write() اور Console.WriteLine() کے درمیان فرق صرف یہ ہے کہ دوسرا فنکشن نتیجہ پرنٹ کرتا ہے اور کرسر کو اگلی لائن پر بھیجتا ہے جبکہ پہلا فنکشن صرف نتیجہ پرنٹ کرتا ہے اور کرسر اسی لائن پر پلک جھپکنے کے بعد بھی آؤٹ پٹ کی نمائش.

نتیجہ

ہم نے C# میں Bitwise آپریٹرز، ان کی اقسام اور فعالیتوں کو دریافت کیا۔ بائیں شفٹ (<<) آپریٹر کا اطلاق نمبر یا قدر کو بٹس کی مخصوص تعداد سے بائیں طرف منتقل کرنے کے لیے کیا جاتا ہے۔ Bitwise آپریٹرز کوڈ کی کارکردگی کو بہتر بناتے ہیں اور یہ سسٹم پر بوجھ نہیں ڈالتا کیونکہ وہ ہلکے وزن والے آپریٹرز ہیں۔ ہمارا سی پی یو (کمپیوٹر پروسیسنگ یونٹ) بٹ وائز لیول پر کام کرتا ہے جب بھی ہم ریاضی کی کوئی کارروائی کرتے ہیں۔ مختصراً، بٹ وائز آپریٹرز پروگرامنگ میں اہم ہیں اور C# تمام Bitwise آپریٹرز کو سپورٹ کرتا ہے جن میں لیفٹ شفٹ آپریٹر (<<) ان میں سے ایک ہے۔