کیہہ کیہہ اے؟ · bei.pm

ایہہ متن خودکار طور تے OpenAI GPT-4o Mini دے ذریعے ترجمہ کیتا گیا۔

اس حصے میں فائل فارمیٹس اور ریورس انجینئرنگ کے بارے میں مضامین ہیں۔

اب بات یہ ہے:
باہر کئی پروگرامنگ زبانیں ہیں اور بہت سے لوگ کچھ چیزوں کو بالکل مختلف ناموں سے جانتے ہیں - یا تو بنیادی چیزوں کے وجود کا کوئی علم نہیں رکھتے، کیونکہ ان کی پروگرامنگ زبان نے انہیں اس سے دور کر دیا ہے۔

tl;dr:
میری نوٹیشن بنیادی طور پر C99 <stdint.h> کے مطابق ہے۔ جو لوگ اس نوٹیشن کو سمجھتے ہیں، وہ میری نوٹیشن کے ساتھ یقیناً آسانی سے کام کر لیں گے۔

عدد صحیح

Integer سادہ الفاظ میں پوری تعداد ہیں، یعنی بغیر عشری حصے کے نمبر۔

اس کے علاوہ، Integer اکثر ڈیٹا فارمیٹس میں ایک مخصوص عددی دائرے کے اندر، تقریباً ایک ریزولوشن، میں متعین ہوتے ہیں۔ میں اسے بٹس میں بیان کرتا ہوں - کیونکہ "بائٹ" اور اس پر مبنی اقسام (ورڈ، کیوورڈ، ...) اکثر پلیٹ فارم پر منحصر ہوتی ہیں۔

علاوہ ازیں، Integer اقسام میں قدرتی اعداد (ℕ، یعنی بغیر سائن - Unsigned) اور پوری اعداد (ℤ، یعنی سائن کے ساتھ - Signed) میں بھی فرق کیا جاتا ہے۔
یہ معلومات شناخت کنندہ میں ایک سائن (u یا s) کے ذریعے ظاہر ہوتی ہیں۔

یہ ممکن ہے کہ سائن والے پورے اعداد یا تو ایک مکمل کے طور پر ظاہر کیے جائیں یا دو مکمل کے طور پر۔
جب تک دوسری صورت میں نہ کہا جائے، دو مکمل استعمال کیا جاتا ہے، کیونکہ یہ جدید کمپیوٹنگ میں ترجیحی نمائندگی ہے۔

بغیر سائن والے اعداد کو میں اپنی دستاویزات میں uint کے طور پر بیان کرتا ہوں، جس کے بعد درستگی کی وضاحت بٹس میں کی جاتی ہے۔
سائن والے اعداد کو میں اپنی دستاویزات میں sint کے طور پر بیان کرتا ہوں، اسی طرح درستگی کی وضاحت بٹس میں کی جاتی ہے۔

میں "char" ڈیٹا ٹائپ کے استعمال سے گریز کرتا ہوں، کیونکہ کردار کی زنجیریں اکثر صرف Integer قیمتوں کی زنجیریں ہوتی ہیں جن کی ایک خاص تشریح ہوتی ہے۔
اس لیے انہیں uint(8)[] کے طور پر ظاہر کیا جاتا ہے۔

مثالیں:

نوٹیشن C99 stdint.h-مقابلہ تفصیل عدد کی حدود
uint(16) uint16_t Unsigned Integer, 16 بٹ لمبائی 0 - 65.535
sint(8) int8_t Signed Integer, 8 بٹ لمبائی, دوہرے مکمل -126 - 127
uint(24) uint32_t:24 Unsigned Integer, 24 بٹ لمبائی 0 - 16.777.216

فیسٹکما-ویلیو

فکسڈ پوائنٹ ویلیو اوہ عددی قیمتیں نیں جو کہ حقیقی عددوں (Q) دے سپیکٹرم توں ہن، جیہڑے ایک کامہ اتے بعد دے نمبر نال ہن۔

فکسڈ پوائنٹ ویلیوز دے نال - ایس کرکے ناں وی - کامے دی جگہ ڈیٹا ٹائپ دے ذریعے پکی طرح توں مقرر ہندی اے۔
ایس طرح ایہ ڈیٹا ٹائپ دے لئی عددی دائرہ وی پکا ہوندا اے؛ ریاضیاتی طور تے، ایہ عددی جگہ محدود ہندی اے۔

حقیقت وچ ایہ ڈیٹا ٹائپ زیادہ تر اوہنا پلیٹ فارمز تے استعمال ہوندا اے جتھے تیز فلوٹنگ پوائنٹ ہارڈ ویئر یونٹ نہیں ہوندا، کیوں کہ فکسڈ پوائنٹ ویلیوز دی حساب کتاب انٹیجر یونٹس دے ذریعے ہو سکدی اے۔

ایس طرح ایہ ڈیٹا ٹائپ، مثلاً، ڈیٹا بیس منیجمنٹ سسٹمز دے ذریعے استعمال ہوندا اے، جدو مستحکم تقاضے پورے کرنے دی لوڑ ہندی اے۔
ایس بارے وچ سوچو، مالیاتی ڈیٹا دی مستقل ذخیرہ کرنے دے سسٹمز نوں؛ زیادہ تر کرنسیز 2 نمبر بعد تک محدود ہندیاں نیں۔ (پر فکسڈ پوائنٹ ویلیوز نوں استعمال کرنا چنگا نہیں، بلکہ اس دے بجائے براہ راست چھوٹی کرنسی اکائی نوں انٹیجر دے طور تے محفوظ کرنا تے باقی دستخطی سطح نوں چھوڑ دینا زیادہ بہتر اے)

انٹیجر دی تفصیلات دے مطابق، میں فکسڈ پوائنٹ ویلیوز وچ عدد دی وضاحت کامے توں پہلے اتے بعد کردا ہاں:
ufixed(9,7) ایک ڈیٹا ٹائپ نوں ظاہر کردا اے، جو کہ بغیر سائن دے 9 بٹ کامے توں پہلے دی قیمت لئی، اتے 7 بٹ کامے توں بعد دی قیمت لئی محفوظ کردا اے؛ کل ملا کے 16 بٹ چوڑا اے اتے ایس طرح مثلاً دو آزاد انٹیجرز دے ویکٹر دے طور تے (0,0) توں (511,127) تک دا دائرہ ڈھانپ سکدا اے۔
پر ایہ تشریح اپنی دہ decimal representation وچ 28 عددی قیمتاں نوں بے کار چھوڑ دیوے گی، کیوں کہ ممکن اے کہ اوہ زیادہ تر (511,99) تک محدود ہووے۔

فکسڈ پوائنٹ ویلیو دے ایک ویکٹر دے طور تے 2 علیحدہ انٹیجرز دے طور تے براہ راست تشریح کرنے دی بجائے - جو کہ تقریباً ہمیشہ decimal numbers وچ تبدیلی دے دوران بے کار ڈیٹا دا دائرہ ہوندا اے، اتے ایک دستی منتقلی دا مطلب ہوندا اے - بلکہ بعد دے نمبر نوں ان دی مکمل وضاحت دے حصے دے طور تے تشریح کیتا جا سکدا اے۔
ufixed(9,7) دے مثال دے نال، ایہ حصے 27 دے نینر دے اوپر ایک حصہ بناؤندا اے - عددی دائرہ پھر 0.00 توں 511 + 126127 تک جا سکدا اے۔ ایک decimal representation وچ تبدیل کرنے لئی، بعد دا نمبر 128 نال تقسیم کیتا جانا چاہیے۔
ایس طریقہ نال حسابی عملیاں کرنا آسان ہوندا اے، کیوں کہ منتقلی خود بخود ہوندی اے، جس وجہ توں ایہ طریقہ عام طور تے ترجیح دیندے ہن۔
پر ایہ طریقہ دا اک نقصان اے کہ بعد دیاں عددیاں decimal representation وچ مزید ایک پکی وضاحت نہیں رکھدیاں، اک عددی مقام ہن فکسڈ پوائنٹ ویلیوز دے نال 0.01 دا متبادل نہیں ہوندا، بلکہ 0.007874 رکھدا اے، جو کہ مطابق گولائی دے غلطیاں پیدا کردا اے۔

کیڑی تشریحی طرز استعمال ہوندا اے، اوہ استعمال دی جگہ تے دستاویزی شکل وچ درج ہوندا اے۔

فلاٹ یا گلیٹ کاما کی قیمتیں

فلوٹنگ پوائنٹس ریاضیاتی طور پر پیچیدہ اظہارات ہیں، جن میں ایک مکمل عدد کو ایک ریاضیاتی فارمولا کے ذریعے اس طرح بیان کیا جاتا ہے کہ مؤثر طریقے سے عشاریہ حصہ شفٹ کے ذریعے بنایا جاتا ہے - اور اس طرح علمی نوٹیشن کا حوالہ دیتا ہے۔
اسے نافذ کرنے کا سب سے عام طریقہ ہے جسے IEEE 754 کے ساتھ معیاری بنایا گیا ہے اور تب سے بین الاقوامی طور پر تسلیم شدہ ہے۔

ایک فلوٹنگ پوائنٹ ویلیو عام طور پر درج ذیل اجزاء پر مشتمل ہوتی ہے:

سائن (0 یا 1) ایکسپوننٹ مینٹیس

جبکہ سائن کو بائنری ہاں/نہ کی معلومات کے طور پر آسانی سے حاصل کیا جا سکتا ہے، اصل عدد کی تشکیل مساوات کے ذریعے ہوتی ہے
مینٹیس * 2ایکسپوننٹ

اضافی طور پر کچھ مستقل قیمتیں ہیں جو خاص کیسز کی عقلی اعداد کو ڈھانپتی ہیں - ان میں ±∞ اور NaN ("کوئی درست عدد نہیں") شامل ہیں۔

فلوٹنگ پوائنٹ ویلیوز خاص طور پر اس وقت مفید ہوتی ہیں جب دقت اتنی اہم نہ ہو، کیونکہ اس قسم کی قیمتوں میں لازمی طور پر گولائی کی غلطیاں اور اس طرح دقت کا نقصان ہوتا ہے۔ عام طور پر، فلوٹنگ پوائنٹ ویلیوز کو مثال کے طور پر کوآرڈینیٹس کی وضاحت کے لئے استعمال کیا جاتا ہے، جیسے کہ 3D ماڈلز میں ورٹیکس ویکٹر یا بصری نمائندگی کے مقاصد کے لئے Bézier-/Spline-Curves۔

ڈیٹا فارمیٹس میں، فلوٹنگ پوائنٹ ویلیوز کو float(مینٹیس, ایکسپوننٹ) کے طور پر مخصوص کیا جاتا ہے۔
اگر IEEE 754 سے مختلف کوئی فارمیٹ استعمال ہوتا ہے، تو یہ اس کے مطابق بیان کیا جائے گا۔