JavaRush /جاوا بلاگ /Random-SD /جاوا: بٽ ۽ بائيٽ
Viacheslav
سطح

جاوا: بٽ ۽ بائيٽ

گروپ ۾ شايع ٿيل
جاوا: بٽ ۽ بائيٽ - 1

تعارف

جيڪڏهن ماڻهو ڊيسيمل نمبر سسٽم ۾ شمار ڪن ٿا ته پوءِ ڪمپيوٽرن کي بائنري سسٽم ۾ شمار ڪيو ويندو. ۽ هڪ پروگرامر کي اهو سمجهڻ گهرجي ته ڪيئن ماڻهن ۽ ڪمپيوٽرن سان ڳالهائڻ. هي جائزو هن معاملي ۾ مدد ڪرڻ گهرجي. ڪڏهن ڪڏهن پڌري جي پويان هڪ سڄي دنيا لڪيل هوندي آهي. مان هن دنيا جي باري ۾ ڳالهائڻ جو مشورو ڏيان ٿو. مثال طور، هفتي ۾ 7 ڏينهن آهن. هاڻي اچو ته ان سوال جو جواب ڏيون ته نمبر ”7“ ڇا آهي؟ ) پهريون، اهو هڪ عدد (مثبت) قدرتي انگ آهي. اهو پڻ هڪ decimal نمبر آهي. ڊيسيمل نمبر ڊيسيمل سسٽم ۾ هڪ انگ آهي. جڏهن اسان چئون ٿا "ڊيسيمل نمبر سسٽم"، ان جو مطلب آهي ته نمبر سسٽم جو بنياد آهي 10 . ريڊڪس ڏيکاري ٿو ته ڏنل نمبر سسٽم ۾ ڪيترا انگ اکر استعمال ڪري سگھجن ٿا ھڪڙي نمبر کي ظاھر ڪرڻ لاء. ڳڻپ صفر کان آهي. ان مطابق، عددي نمبر سسٽم ۾ انگن جي نمائندگي ڪرڻ لاء، اسان 0 کان 9 تائين نمبر استعمال ڪندا آهيون. اهو سٺو آهي، پر اسان کي نه رڳو 9 تائين، پر ان کان به اڳتي وڌڻ جي ضرورت آهي. ڪيئن هئڻ؟ مثال طور، نمبر 10. هن نمبر کي لکڻ لاءِ، اسان 2 عددن جيترا استعمال ڪريون ٿا. اعشاري نظام ۾ هر عدد جي پوزيشن کي ڊيسيمل جڳه چئبو آهي. انگ اکر ساڄي کان کاٻي طرف شمار ڪيا ويا آهن:
جاوا: بٽ ۽ بائيٽ - 2
ان کان علاوه، ڊيسيمل نمبر ھيٺين طور وڌايو وڃي ٿو: 103 = 1*10^2 + 0*10^1 + 3*10^0
جاوا: بٽس ۽ بائيٽ - 3
انگ بنيادي طور ساڄي کان کاٻي طرف وڌي ٿو. يعني پهريان 7 هو ۽ پوءِ 10 ٿي ويا. تنهن ڪري، انگ اکر ساڄي پاسي کان ڳڻيا وڃن ٿا، صفر کان شروع ٿي. هي سڀ ڇا لاءِ آهي؟ اهو ئي سبب آهي جو اسان ڪمپيوٽر نه آهيون. ۽ جڏهن اسان ڳڻيو ٿا ڊيسيمل ۾ (يعني بنيادي 10)، ڪمپيوٽرن کي بائنري ۾ شمار ڪيو وڃي ٿو (يعني بيس 2). پر اهي ضابطا جيڪي انهن نمبر سسٽم ۾ لاڳو ٿين ٿا ساڳيا آهن.
جاوا: بٽ ۽ بائيٽ - 4

بائنري سسٽم

بائنري سسٽم ڊيسيمل سسٽم سان تمام گهڻو ملندو آهي، فرق صرف اهو آهي ته هتي حد 10 نه، پر 2 آهي. اچو ته هڪ مثال سان مقابلو ڪريون. اسان بائنري ۾ 11 جي نمائندگي ڪيئن ڪريون ٿا؟ اهو تمام سادو آهي: توهان کي صرف ڊيسيمل نمبر کي ورهائڻ جي ضرورت آهي بنيادي 2 ذريعي، اهو آهي، هڪ ڪالمن ۾ 11/2 ڳڻيو. مثال:
جاوا: بٽ ۽ بائيٽ - 5
يا هتي هڪ مثال آهي WikiHow مان:
جاوا: بٽ ۽ بائيٽ - 6
دلچسپ ڳالهه اها آهي ته، اسان بائنري ۾ هڪ عدد جي نمائندگي ڪري سگهون ٿا ساڳئي طرح ڊيسيمل ۾: 111 بائنري ۾ = 1*2^2 + 1*2^1 + 1*2^0 = 4 + 2 + 1
جاوا: بٽس ۽ بائيٽ - 7
بائنري کان ڊيسيمل تائين تبادلي جو هڪ مثال آن لائن ڪيلڪيوليٽر ۾ ڏسي سگھجي ٿو . انهي حقيقت جي باري ۾ ڳالهائيندي ته نمبر سسٽم ۾ آپريشن جا ضابطا ساڳيا آهن، اچو ته بائنري سسٽم ۾ اضافي تي نظر رکون:
جاوا: بٽس ۽ بائيٽ - 8
جئين توهان ڏسي سگهو ٿا، اسان اضافي جي دوران عددن کي ساڳئي طريقي سان منتقلي ڪندا آهيون جيئن ڊيسيمل سسٽم ۾. اضافي جو تجزيو ڏسي سگھجي ٿو، مثال طور، هتي: رستي ۾، ڪجهه لفظ "ڊسچارج" وقتي طور تي ذڪر ڪيو ويو آهي. ۽ اهو ڇا آهي؟ جڳھ صرف ھڪڙي نمبر جي نمائندگي ڪرڻ جو ھڪڙو "ڍانچي عنصر" آھي. اھو آھي، نمبر 10 ٻن عددن تي مشتمل آھي: ھن نمبر کي لکڻ لاءِ اسان کي 2 عدد، 2 جڳھون، 2 عنصرن جي ضرورت آھي. اسان لاءِ اھو سمجھڻ ضروري آھي ڇو ته بائنري نمبر سسٽم ۾، ھڪڙو عدد ھڪڙو سا آھي . Bit لفظ انگريزيءَ جي ”binary digit“ مان نڪتل آهي ، يعني هڪ بائنري نمبر. اهو يا ته 0 يا 1 ٿي سگهي ٿو. پر جيئن ته اسان انگن ۽ لفظن کي مجموعي طور تي پڙهون ٿا، ۽ هڪ اکر جي حساب سان نه، ڪمپيوٽرن کي هڪ وقت ۾ هڪ سا به نه ٿو پڙهي. RAM ۾ پروسيس ٿيل معلومات جي گھٽ ۾ گھٽ "ٽڪڙي" لاء (جنهن کي ڄاڻ جو سڀ کان ننڍڙو پتو ڏيڻ وارو يونٽ سڏيو ويندو آهي)، 8 بٽس جو هڪ سلسلو پڙهيو ويندو آهي . جيئن ته انهن مان 8 آهن، ان کي "آڪٽٽ" سڏيو ويندو آهي. ۽ پڻ - وڌيڪ مشهور لفظ بائيٽ . آڪٽوٽس کي ياد ڪرڻ لاءِ، توهان کي ياد آهي ته لفظ آڪٽوپس (اٺن پيرن) جو انگريزيءَ ۾ ترجمو آڪٽوپس آهي. اهو آهي، هتي عنوان ۾ بلڪل ساڳيو "آڪٽو" آهي:
جاوا: بٽس ۽ بائيٽ - 9
اچو ته غور ڪريون ته وڌ ۾ وڌ نمبر ڪهڙو آهي جنهن کي اسين 8 بِٽ جي نمائندگي ڪري سگهون ٿا؟
جاوا: بٽس ۽ بائيٽ - 10
۽ هتي سوال پيدا ٿئي ٿو: منفي نمبرن بابت ڇا؟ انهي کي سمجهڻ لاءِ اچو ته ڳالهايون ته جاوا ۾ بائٽس کي ڪيئن ظاهر ڪيو وڃي ٿو
جاوا: بٽس ۽ بائيٽ - 11

جاوا ۽ بائيٽ

اهو ڪيئن آهي ته اسان جاوا ۾ منفي نمبر استعمال ڪري سگهون ٿا؟ اهو صرف ڪيو ويو آهي. جاوا ۾، بائٽس تي دستخط ٿيل آهن. کاٻي پاسي وارو عدد/بٽ (جنهن کي ”سڀ کان اهم سا“ به سڏيو وڃي ٿو) هڪ قسم جو ”مارڪر“ ٺاهيو ويو آهي جيڪو ان سوال جو جواب ڏئي ٿو: ”ڇا هي نمبر منفي آهي؟ جيڪڏهن جواب ها آهي، ته پوءِ مارڪر جي قيمت 1 آهي. ٻي صورت ۾، اهو 0 آهي. اچو ته هڪ مثال ڏسون ته ڪيئن نمبر 5 کي منفي نمبر 5 ۾ تبديل ڪجي:
جاوا: بٽس ۽ بائيٽ - 12
هن تصوير جي بنياد تي، توهان انهن حدن کي سمجهي سگهو ٿا جنهن جي اندر هڪ بائيٽ ويل آهي:
جاوا: بٽس ۽ بائيٽ - 13
اهو پڻ واضح آهي ته:
  • جيڪڏهن اسان هڪ کي 127 ۾ شامل ڪيو، اسان کي -128 ملندو.
  • جيڪڏهن اسان هڪ کي -128 مان ڪڍون ٿا، اسان کي 127 ملندو.
اهڙيء طرح، جاوا ۾ بائيٽ -128 کان 127 تائين هڪ قدر وٺي سگھي ٿو. جيئن اسان کي ياد آهي، هڪ بائيٽ هڪ آڪٽيٽ آهي. ۽ وڌ ۾ وڌ عدد/سڀ کان وڌيڪ اھم بٽ جو سيريل نمبر 7 آھي، جتان اسين صفر مان شمار ڪريون ٿا. انهي حالت ۾، اهو ياد رکڻ آسان آهي ته هڪ بائيٽ -2 جي طاقت جي برابر آهي 7 (هيٺيون حد) کان 2 جي طاقت 7 منٽ 1 (مٿين حد). ڊيٽا جي قسم سان ڪم ڪرڻ پاڻ سادو آهي. اسان هن آرٽيڪل لاءِ آن لائن جاوا ڪمپلر “repl.it” کي “sandbox” طور استعمال ڪريون ٿا. https://repl.it/languages/java. مثال طور، اچو ته ڪوڊ هلائيون جيڪو بائنري فارم ۾ بائيٽ ويريئبل کي اسٽرنگ طور پيش ڪندو:
class Main {
  public static void main(String[] args) {
    byte octet = 5;
    String bin = String.format("%8s", Integer.toBinaryString(octet)).replace(' ', '0');
    System.out.println(bin);
  }
}
بائيٽ سان ڪم ڪرڻ فعال طور تي استعمال ڪيو ويندو آهي جڏهن I/O اسٽريمز سان ڪم ڪندي. توھان وڌيڪ پڙھي سگھو ٿا سبق ۾ Oracle کان: " I/O اسٽريمز ". ان کان علاوه، جاوا ۾ توھان استعمال ڪري سگھو ٿا ھڪ خاص لفظي قدر بيان ڪرڻ لاءِ بٽس:
class Main {
  public static void main(String[] args) {
    byte data = 0b101;
    System.out.println(data);
  }
}
جاوا: بٽس ۽ بائيٽ - 14

بِٽ مينپوليشن

بائيٽ ۽ بٽ تي ڇڪڻ، ڪو به مختلف بٽ ميپيپليشن جو ذڪر ڪرڻ ۾ ناڪام نٿو ٿي سگهي. غالباً سڀ کان عام آپريشن شفٽ (bitwise shift يا bit-shift) آھي. ۽ سڀ ڇاڪاڻ ته انهن جي نتيجي ۾ واضح عملي فائدا آهن. ڇا استعمال آهي؟ N پوزيشن کان کاٻي پاسي ڦيرائڻ برابر آھي انگ کي 2N سان ضرب ڪرڻ جي. ۽ ساڄي طرف هڪ شفٽ ساڳي ڊويزن سان ملندڙ جلندڙ آهي، اهڙيء طرح، 5<<2 == 5*Math.pow(2,2) ۽ اهو سمجهڻ لاءِ ته ائين ڇو آهي، اچو ته هن مثال کي وڌيڪ تفصيل سان ڏسون:
جاوا: بٽس ۽ بائيٽ - 15
bitwise negation NOT (Unary bitwise)، جيڪو ٽائلڊ سان ظاھر ڪيو ويو آھي، بٽ کي ڦيرائي ٿو. اهو هڪ ٽيلڊ طور لکيو ويو آهي، مثال طور ~5.
public static void main(String[] args) {
	System.out.println(~5); //-6
 	System.out.println(~-5);//4
}
اهو هڪ ڀيرو ٻيهر ڏيکاري ٿو ته جڏهن جاوا هڪ نمبر جي نشاني کي تبديل ڪري ٿو، ان کان علاوه بٽ ويلز کي بلڪل آخر ۾ ڦيرائڻ کان علاوه، اسان +1 کي انجام ڏيون ٿا. ۽ ان کان سواء، جيئن اسان ڏسون ٿا، اسان جو نمبر 5 تبديل ڪري ٿو. ۽ انهي ڪري ته اهو ساڳيو نمبر رهي ٿو جيئن نشان تبديل ڪرڻ کان اڳ، توهان کي ڪرڻو پوندو +1. Bitwise AND توهان کي اجازت ڏئي ٿو ٻه مختلف انگن کي ڇڏڻ جي قيمت 1 سان ٿوري لاءِ صرف ان صورت ۾ جڏهن سڀني بٽن جي هڪ جي قيمت آهي. انهي بابت ڇا دلچسپ آهي ٿي سگهي ٿو ته ان ۾ ڪجهه ايپليڪيشن فائدا آهن:
int x=4;
System.out.println((x&1) != 1);
هي ڪوڊ برابري لاءِ نمبر x چيڪ ڪري ٿو. اچو ته هڪ مثال ڏسو:
جاوا: بٽس ۽ بائيٽس - 16
Bitwise AND ۽ Bitwise OR گڏجي استعمال ڪندي، توھان استعمال ڪري سگھو ٿا ماسڪ:
public static void main(String[] args) {
    byte optionA=0b0100;
    byte optionB=0b0010;
    byte optionC=0b0001;
    byte value = (byte)(optionB | optionC);
    // Check for optionB
    if ((optionC & value) != 0b0000) {
      System.out.println("Yes");
    } else {
      System.out.println("No");
    }
  }
وڌيڪ تفصيل لاءِ ڏسو ” جاوا ۾ bitwise آپريٽرن سان ماسڪنگ جا اختيار “. بِٽ مينپوليشن هڪ دلچسپ موضوع آهي جنهن تي الڳ الڳ رايا، مضمون ۽ ڪتاب لکيا ويا آهن. ۽ ھتان کان شروع ٿئي ٿو ڊگھو رستو ڪرپٽوگرافي ڏانھن. هن جائزي جي حصي جي طور تي، اهو سمجهڻ جي قابل آهي ته اهو ڇو ڪم ڪري ٿو ۽ ڪيئن. بٽ آپريشنز جي باري ۾ وڌيڪ معلومات لاءِ، مان سفارش ڪريان ٿو پڙهو جائزو ٽيپروگر کان: " بٽ آپريشنز بابت ."

ابتدائي قسمون

تنهن ڪري، هڪ بائيٽ هڪ آڪٽٽ آهي، اهو آهي، 8 بٽ. اهو ياد رکڻ آسان آهي ته جاوا ۾ پڻ 8 پرائمري قسم آهن، اتفاق سان. هڪ پرائمري قسم هڪ ڊيٽا جو قسم آهي جيڪو هڪ پروگرامنگ ٻولي ۾ ٺهيل آهي، اهو آهي، ڊفالٽ طرفان دستياب آهي. بائيٽ ميموري فوٽ پرنٽ جي لحاظ کان سڀ کان ننڍڙو پرائمري ڊيٽا جو قسم آهي جنهن سان جاوا ڪم ڪري سگهي ٿو. جيئن اسان اڳ ۾ چيو آهي، هڪ بائيٽ 8 بٽ وٺي ٿو. تنهن ڪري، سڀ کان اهم انگ اکر نمبر 7 آهي. تنهن ڪري، بائيٽ ۾ -2 کان 7 پاور کان 2 تائين 7 پاور مائنس 1 جي نتيجن تي مشتمل آهي. ٻيا ڪهڙا ابتدائي قسم آهن:
جاوا: بٽس ۽ بائيٽ - 17
جيئن ته اسان جدول مان ڏسي سگهون ٿا، ڊيٽا جي قسمن جي لحاظ کان ڊيٽا جي مقدار جي لحاظ کان ٻه ڀيرا قبضو ڪيو ويو آهي. اھو آھي، مختصر = 2 * بائيٽ، ۽ int = 2 * ننڍو. اهو اصل ۾ ياد ڪرڻ آسان آهي. ياد رکو ته بائيٽ = 8 بٽ. حقيقت اها آهي ته اهو گهٽ نه ٿي سگهي، پڻ ياد آهي. انگريزيءَ ۾ انٽيجر کي انٽيجر چئبو آهي. ان مان ابتدائي قسم جو مخفف int سڏيو ويو. ھڪڙو باقاعده عدد آھي - int. ھڪڙو مختصر نسخو آھي، مختصر، ۽ ھڪڙو ڊگھو نسخو، ڊگھو. ان جي مطابق، int 32 بٽ (4 بائيٽ) تي قبضو ڪري ٿو. ننڍو نسخو 2 ڀيرا ننڍو آهي - 16 بٽ (2 بائيٽ)، ۽ ڊگهو نسخو ٻه ڀيرا وڏو آهي، يعني. 64 بٽ (8 بائيٽ). تنهن ڪري هڪ int وڌ ۾ وڌ 2 بلين ۽ هڪ سئو ملين جو تعداد ذخيرو ڪري سگهي ٿو. ۽ ڊگھو وڌ ۾ وڌ ذخيرو ڪري سگھي ٿو اٽڪل 9 quadrillion (هڪ سٺو لفظ). پراڻي مذاق کي ياد رکو ته ڪيئن هڪ نئون پروگرامر سمجهي ٿو ته هڪ ڪلو بائيٽ ۾ 1000 بائيٽ آهن، ۽ هڪ مڪمل پروگرامر اهو سمجهي ٿو ته هڪ ڪلوگرام ۾ 1024 گرام آهن، اسان سمجهي سگهون ٿا:
1 mb = 1024 Kbyte = 1024 * 1024 = 1048576 bytes
1 int = 4 bytes
1 mb = 262144 int
رستي ۾، هڪ محتاط پڙهندڙ شايد محسوس ڪيو هوندو ته تصوير ۾ صرف 7 قسم آهن. 8 پرائمٽيو ٽائيپ آهي بولن. boolean هڪ Boolean ڊيٽا جو قسم آهي جنهن ۾ صرف ٻه قدر آهن: صحيح ۽ غلط. پر سوال پيدا ٿئي ٿو - اهو ڇا آهي؟ جاوا ورچوئل مشين جي وضاحت ۽ سيڪشن " 2.3.4. بوليان قسم " اسان کي جواب ڏيندو:
جاوا: بٽس ۽ بائيٽ - 18
اهو آهي، صرف هڪ بوليان هڪ int جي برابر رقم وٺندو. جيڪڏهن اسان بولين جي هڪ صف جو اعلان ڪريون ٿا، ته پوءِ هر هڪ عنصر 1 بائيٽ تي قبضو ڪندو. اهي اهڙا معجزا آهن :)

نتيجو

مان توهان کي صلاح ڏيان ٿو ته توهان پاڻ کي ڪجهه وڌيڪ مواد سان واقف ڪريو مضبوط ڪرڻ لاء: #وياچسلاو
تبصرا
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION