JavaRush /جاوا بلاگ /Random-SD /سچل پوائنٽ نمبر اندر ڇا آهي ۽ اهو ڪيئن ڪم ڪندو آهي؟
Ivan
سطح
Харьков

سچل پوائنٽ نمبر اندر ڇا آهي ۽ اهو ڪيئن ڪم ڪندو آهي؟

گروپ ۾ شايع ٿيل

مواد:

تصوير: http://pikabu.ru/

تعارف

جاوا سکڻ جي پهرين ئي ڏينهن ۾، مون کي هڪ اهڙي عجيب قسم جي پريميٽوز مليا جيئن فلوٽنگ پوائنٽ نمبر. مون کي فوري طور تي انهن جي خاصيتن ۾ دلچسپي هئي ۽ اڃا به وڌيڪ، انهي طريقي سان اهي بائنري ڪوڊ ۾ لکيل هئا (جيڪو پاڻ ۾ ڳنڍيل آهي). انٽيجرز جي ڪنهن به حد جي برعڪس، جيتوڻيڪ هڪ تمام ننڍڙي حد ۾ (مثال طور، 1 کان 2 تائين) انهن جو هڪ لامحدود تعداد آهي. ۽ هڪ محدود ياداشت جي سائيز هجڻ ڪري، هن سيٽ کي بيان ڪرڻ ناممڪن آهي. پوء اهي بائنري ۾ ڪيئن بيان ڪيا ويا آهن ۽ اهي ڪيئن ڪم ڪن ٿا؟ افسوس، وڪي تي ڏنل وضاحتون ۽ هتي Habré تي هڪ تمام سٺو مضمون مون کي مڪمل سمجھ نه ڏئي سگهيو، جيتوڻيڪ انهن بنياد رکيا. اهو تجزيي مضمون صبح سوير پڙهڻ کان پوءِ ئي محسوس ٿيو .

تاريخ ۾ سير

60-70 جي ڏهاڪي ۾ ، جڏهن ڪمپيوٽر وڏا هئا ۽ پروگرام ننڍا هئا، تڏهن به حسابن لاءِ ڪو به واحد معيار نه هو، ۽ گڏوگڏ سچل نقطي نمبر کي ظاهر ڪرڻ لاءِ به هڪ معيار هو. هر ڪمپيوٽر ان کي مختلف طريقي سان ڪيو، ۽ هر هڪ کي پنهنجون غلطيون هيون. پر 70 واري ڏهاڪي جي وچ ۾، Intel فيصلو ڪيو ته نئين پروسيسرز کي سپورٽ "بهتر" رياضي سان گڏ ۽ ساڳئي وقت ان کي معياري بڻائي. پروفيسر وليم ڪهان ۽ جان پامر (نه، بيئر بابت ڪتابن جو ليکڪ) ان کي ترقي ڪرڻ لاء آندو ويو. اتي ڪجھ ڊرامو ھو، پر ھڪڙو نئون معيار ٺاھيو ويو. هاڻي هي معيار IEEE754 سڏيو ويندو آهي

فلوٽنگ پوائنٽ نمبر فارميٽ

جيتوڻيڪ اسڪول جي درسي ڪتابن ۾، هر ڪنهن کي 1.2 × 10 3 يا 1.2 E3 فارم جي تمام وڏا يا تمام ننڍا انگ لکڻ جي هڪ غير معمولي طريقي سان منهن ڏيڻو پيو ، جيڪو 1.2 × 1000 = 1200 جي برابر آهي . اهو سڏيو ويندو آهي exponential notation method. انهي صورت ۾، اسان فارمولا استعمال ڪندي عدد جي اظهار سان ڪم ڪري رهيا آهيون: N=M×n p ، جتي
  • N = 1200 - نتيجو نمبر
  • M = 1,2 - mantissa - جزوي حصو، اڪائونٽ جي حڪمن ۾ وٺڻ کان سواء
  • n = 10 آرڊر جو بنياد آهي. انهي حالت ۾ ۽ جڏهن اسان ڪمپيوٽرن بابت نه ڳالهائي رهيا آهيون، بنيادي نمبر 10 آهي
  • p = 3 - بنياد جو درجو
گهڻو ڪري، آرڊر جو بنياد فرض ڪيو ويو آهي 10 ۽ صرف مينٽيسا ۽ بنياد جو قدر لکيو ويو آهي، انهن کي خط E سان الڳ ڪندي. اسان جي مثال ۾، مون برابر درجا ڏنيون 1.2 × 10 3 ۽ 1.2 E3 جيڪڏهن سڀ ڪجهه واضح آهي، ۽ اسان اسڪول جي نصاب ۾ نوسٽلجڪ سير مڪمل ڪري چڪا آهيون، ته پوءِ هاڻي مان ان کي وسارڻ جي صلاح ڏيان ٿو، ڇاڪاڻ ته جڏهن فلوٽنگ پوائنٽ نمبر ٺاهي رهيا آهيون ته اسان ان سان معاملو ڪري رهيا آهيون. ٻه طاقتون، نه ڏهه، يعني. n = 2 ، سڄو هموار فارمولا 1.2E3 ڀڄي ويو ۽ اهو واقعي منهنجي دماغ کي ڀڃي ڇڏيو.

نشان ۽ درجو

پوء اسان وٽ ڇا آهي؟ نتيجي طور، اسان وٽ پڻ ھڪڙو بائنري نمبر آھي، جنھن ۾ ھڪڙو منٽيسا شامل آھي - اھو حصو جيڪو اسان ھڪڙي طاقت ۽ طاقت ڏانھن وڌائينداسين. ان کان علاوه، جيئن ته انٽيجر جي قسمن سان عام آهي، سچل-پوائنٽ نمبرن ۾ ٿورڙو هوندو آهي جيڪو نشاني جو تعين ڪري ٿو - ڇا اهو انگ مثبت هوندو يا منفي. مثال طور، مان تجويز ڪريان ٿو قسم تي غور ڪرڻ float، جيڪو 32 بٽس تي مشتمل آهي. ڊبل درست انگن سان doubleمنطق ساڳيو آهي، صرف ٻه ڀيرا ڪيترائي بٽ آهن. 32 بِٽن مان، پھريون سڀ کان اھم اھم نشاني لاءِ مختص ڪيو ويو آھي، ايندڙ 8 بِٽ ايڪسپونٽ لاءِ مختص ڪيا ويا آھن - اھو پاور جنھن ڏانھن اسان مينٽيسا کي اٿارينداسين، ۽ باقي 23 بِٽ - مانٽيسا ڏانھن. ظاهر ڪرڻ لاء، اچو ته هڪ مثال ڏسو: سچل پوائنٽ نمبر اندر ڇا آهي ۽ اهو ڪيئن ڪم ڪري ٿو - 1پهريون سادو بلڪل سادو آهي. جيڪڏهن پهرين ساٽ جو قدر 0 آهي ، ته پوءِ جيڪو نمبر اسان حاصل ڪنداسين اهو مثبت هوندو . جيڪڏهن ساٽ 1 آهي، پوء اهو نمبر منفي ٿيندو . 8 بٽ جو ايندڙ بلاڪ هڪ ايڪسپونٽ بلاڪ آهي. exponent هڪ باقاعده اٺ بٽ نمبر جي طور تي لکيو ويو آهي، ۽ گهربل درجو حاصل ڪرڻ لاء اسان کي 127 جي نتيجي ۾ 127 کي گھٽائڻو پوندو ، اسان جي صورت ۾، ايڪسپورٽ جا اٺ بٽ 10000001 آهن . اهو نمبر 129 سان ملندو آهي . جيڪڏهن توهان وٽ هڪ سوال آهي ته اهو ڪيئن حساب ڪجي، پوء تصوير هڪ تڪڙو جواب ڏيکاري ٿو. وڌايل نسخو حاصل ڪري سگھجي ٿو ڪنھن به Boolean الجبرا ڪورس ۾. سچل پوائنٽ نمبر اندر ڇا آهي ۽ اهو ڪيئن ڪم ڪري ٿو - 21 × 2 7 + 0 × 2 6 + 0 × 2 5 + 0 × 2 4 + 0 × 2 3 + 0 × 2 2 + 0 × 2 1 + 1 × 2 0 = 1 × 128 + 1 × 1 = 128+ 1=129 اهو ڳڻڻ ڏکيو ناهي ته وڌ ۾ وڌ نمبر جيڪو اسان انهن 8 بٽن مان حاصل ڪري سگهون ٿا اهو آهي 11111111 2 = 255 10 (سب اسڪرپٽ 2 ۽ 10 جو مطلب بائنري ۽ ڊيسيمل نمبر سسٽم) جڏهن ته، جيڪڏهن اسان صرف مثبت ايڪسپونٽ ويلز استعمال ڪريون ( 0 کان 255 تائين )، پوءِ نتيجي ۾ نڪرندڙ انگن ۾ ڊيسيمل پوائنٽ کان اڳ ڪيترائي نمبر هوندا، پر پوءِ نه؟ درجي جا ناڪاري قدر حاصل ڪرڻ لاءِ، توھان کي 127 کي گھٽائڻو پوندو generated exponent مان . اهڙيء طرح، درجي جي حد -127 کان 128 تائين هوندي . اسان جي مثال کي استعمال ڪندي، گهربل درجو ٿيندو 129-127 = 2 . اچو ته هن نمبر کي هن وقت ياد رکون.

منتيسا

هاڻي جي باري ۾ mantissa. اهو 23 بٽس تي مشتمل آهي، پر شروعات ۾ هميشه هڪ ٻيو يونٽ لاڳو ٿئي ٿو، جنهن لاءِ بِٽ مختص نه ڪيا ويا آهن. اهو خرچ ۽ معيشت جي سببن لاء ڪيو ويو آهي. ساڳئي انگ کي مختلف طاقتن ۾ ظاهر ڪري سگهجي ٿو مينٽيسا ۾ زيرو شامل ڪندي ڊيسيمل پوائنٽ کان اڳ يا پوءِ. ان کي سمجھڻ جو آسان طريقو آھي ڊيسيمل ايڪسپونٽ سان: 120,000 = 1.2 × 10 5 = 0.12 × 10 6 = 0.012 × 10 7 = 0.0012 × 10 8 وغيره. بهرحال، مينٽيسا جي سر ۾ هڪ مقرر ٿيل نمبر داخل ڪرڻ سان، اسان هر ڀيري نوان نمبر حاصل ڪنداسين. اچو ته ان کي سمجهي وٺون ته اسان جي 23 بٽ کان اڳ اتي هڪ سان گڏ هڪ وڌيڪ هوندو. عام طور تي هي ساٽ هڪ ڊٽ جي ذريعي باقي کان جدا ڪيو ويندو آهي، تنهن هوندي به، ڪجهه به نه آهي. اهو صرف وڌيڪ آسان آهي 1. 1110000000000000000000000000000000000000000 سچل پوائنٽ نمبر اندر ڇا آهي ۽ اهو ڪيئن ڪم ڪري ٿو - 3هاڻي نتيجو ڪندڙ مينٽيسا کي کاٻي کان ساڄي طاقت ڏانهن وڌڻ جي ضرورت آهي، هر قدم سان طاقت کي گهٽائيندي. اسان ان طاقت جي قيمت سان شروع ڪريون ٿا جيڪا اسان حساب جي نتيجي ۾ حاصل ڪئي آهي، يعني 2 (مون عمدا هڪ سادي مثال چونڊيو آهي ته جيئن ٻن جي طاقت جي هر قيمت کي نه لکان ۽ انهن کي مٿي ڏنل جدول ۾ شمار نه ڪيو جڏهن ملندڙ ساٽ صفر آهي) سچل پوائنٽ نمبر اندر ڇا آهي ۽ اهو ڪيئن ڪم ڪري ٿو - 41×2 2 + 1×2 1 + 1×2 0 + 1×2 -1 = 1×4 + 1×2 + 1×1 + 1×0.5 = 4+2+1+0.5 = 7.5 ۽ نتيجو 7.5 حاصل ڪيو ، درستي چيڪ ڪري سگھجي ٿو، مثال طور، ھن لنڪ تي

نتيجا

هڪ معياري سچل پوائنٽ نمبر float32 بِٽن تي مشتمل هوندو آهي، پهرين بِٽ نشاني (+ يا -) هوندي آهي، ايندڙ اَٺ ايڪسپونٽ هوندا آهن، ايندڙ 23 مانٽيسا هوندا آهن نشاني جي حساب سان - جيڪڏهن بٽ 0 هڪ مثبت انگ آهي. جيڪڏهن bit 1 منفي آهي. Exponential ذريعي - اسان bitwise کي decimal number ۾ تبديل ڪريون ٿا (پهرين سا کاٻي پاسي کان 128 آهي ، ٻيو 64 آهي ، ٽيون آهي 32 ، چوٿين 16 آهي ، پنجون آهي 8 ، ڇهين آهي 4 ، ستين آهي 2 ، اٺون آهي 1 )، نتيجي واري انگ مان 127 کي گھٽايو ، اسان کي درجو ملي ٿو جنهن سان اسان شروع ڪنداسين. مينٽيسا جي مطابق - اڳ ۾ موجود 23 بِٽس ۾ اسان قدر 1 سان هڪ ٻيو بٽ شامل ڪندا آهيون ۽ ان مان اسان حاصل ڪيل طاقت کي وڌائڻ شروع ڪندا آهيون ، هر ايندڙ بٽ سان هن طاقت کي گهٽائيندي. اهو سڀ ماڻهو آهي، ٻار! سچل پوائنٽ نمبر اندر ڇا آهي ۽ اهو ڪيئن ڪم ڪري ٿو - 5پي ايس: هوم ورڪ جي طور تي، هن آرٽيڪل کي استعمال ڪندي، تبصرن ۾ پنهنجا نسخا ڇڏي ڏيو ڇو ته درست غلطيون وڏي تعداد ۾ رياضي جي عملن سان سچل پوائنٽ نمبرن سان ٿينديون آهن.
تبصرا
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION