JavaRush /وبلاگ جاوا /Random-FA /اعداد واقعی در حافظه کامپیوتر توضیح.
Marianna
مرحله
Москва

اعداد واقعی در حافظه کامپیوتر توضیح.

در گروه منتشر شد
عصر بخیر در حین مطالعه سخنرانی "تغییرهای کار با اعداد واقعی" اولین تلاش (بخش 2. ساختار اعداد ممیز شناور) و سخنرانی های اضافی در مورد موضوع، بسیاری باید با سوالات زیادی در مورد این موضوع مواجه شده باشند. در ابتدا سعی کردم پاسخ های لازم را به خودم بدهم و اکنون آنها را به شما پیشنهاد می کنم تا به شما در درک کامل در یک نظم منطقی منسجم کمک کنم. 1. سیستم اعداد اعشاری و باینری. 1.1 سیستم اعداد اعشاری یکی از رایج‌ترین سیستم‌ها است؛ این سیستمی است که ما برای هر گونه محاسبات ریاضی غیر رایانه‌ای در مدرسه، دانشگاه و در زندگی از آن استفاده می‌کنیم. از اعداد 1، 2، 3، 4، 5، 6، 7، 8، 9، 0 (عربی) استفاده می کند - در مجموع 10 رقم. همچنین یک نماد رومی برای اعداد وجود دارد که با این حال، اکنون عملاً استفاده نمی شود. در سیستم اعشاری، شمارش به صورت واحد، ده‌ها، صدها، هزاران، ده‌ها هزار، صدها هزار، میلیون‌ها و غیره انجام می‌شود. - به عبارت دیگر، اینها همه ارقام عدد هستند. رقم یک عدد ، موقعیت (محل) رقم در رکورد اعداد است . کمترین رقم اعداد طبیعی (و کم اهمیت ترین ) رقم واحد (راست ترین) است. چرا او بی اهمیت ترین است؟ زیرا با انداختن رقم واحد یک عدد، خود عدد به حداقل تغییر می کند (مثلاً اعداد 345 و 340). بعد، رقم دوم رقم ده ها و غیره است. این همه به چه معناست؟ بیایید هر عدد صحیحی را در سیستم اعشاری بگیریم و آن را به ارقام تجزیه کنیم . 3297 = 3*1000 + 2*100 + 9*10 + 7 بنابراین، در می یابیم که عدد 3297 شامل 3 واحد از رقم چهارم (یعنی 3 هزار)، 2 واحد از رقم سوم (2 صدها)، 9 است. واحدهای رقم دوم (9 ده) و 7 واحد رقم اول . به عبارت دیگر، این عدد سه هزار و دویست و نود و هفت است و بر این اساس، موقعیتی است . در مورد ارقام اعداد کسری (واقعی) چطور ؟ به ارقام اعداد کسری (قسمت کسری آنها) می گویند: دهم، صدم، هزارم، ده هزارم و غیره. هرچه رقم از نقطه اعشار (از کل قسمت عدد) دورتر باشد، اهمیت کمتری دارد (با کنار گذاشتن آن، مقدار عدد کمی تغییر می کند). به عنوان مثال، بیایید هر عدد کسری ارائه شده به صورت اعشاری را در نظر بگیریم: 25.076 = 2*10 + 5 +0*0.1 + 7*0.01 +6*0.001 بنابراین، متوجه می شویم که عدد کسری 25.076 شامل 2 ده، 5 واحد، 0 دهم است. ، 7 صدم و 6 هزارم. سیستم اعشاری از 10 رقم و مضربی از 10 مکان استفاده می کند - از این رو "اعشاری" نامیده می شود. 1.2 سیستم اعداد باینری یک سیستم اعداد است که تقریباً در تمام رایانه های مدرن و سایر دستگاه های الکترونیکی محاسباتی استفاده می شود. برای ثبت اعداد، فقط از دو رقم استفاده می کند - 0 و 1. برای اینکه اشتباه نشود که عدد در کدام سیستم اعداد نوشته شده است، یک نشانگر در پایین سمت راست ارائه می شود (این پایه سیستم اعداد است ). مثال: 100010 1000₂ در اینجا اولین عدد هزار آشنا در سیستم اعشاری است و عدد پایینی عدد در نمایش سیستم دودویی و در سیستم اعشاری برابر است... 8 ! مانند سیستم اعشاری، سیستم باینری نیز اعداد را به ارقام تقسیم می کند . هر رقم در یک عدد باینری بیت (یا رقم ) نامیده می شود. (اگر کسی علاقه مند است، چهار بیت یک نیبل (یا تتراد)، 8 بیت یک بایت ، 16 بیت یک کلمه ، 32 بیت یک کلمه دوگانه است ). بیت ها (اعداد) نیز از راست به چپ شماره گذاری می شوند و از صفر شروع می شوند (برخلاف سیستم اعشاری). کم‌اهمیت‌ترین ، کم‌اهمیت‌ترین بیت سمت راست دارای عدد دنباله‌ای 0 است . بعد بیت اول ، دوم و غیره می آید، هر چه بیت قدیمی تر باشد، اهمیت بیشتری دارد (به قیاس با سیستم اعشاری که می فهمیم - اگر آن ها را از عدد 1455 حذف کنید، عدد 1450 باقی می ماند. - تقریباً برابر با مقدار اولیه است. اما اگر صدها را حذف کنید، با عدد 1050 باقی می‌مانید که در حال حاضر با مقدار اولیه فاصله دارد، زیرا مکان صدها بسیار مهم‌تر از مکان واحدها است (با مرتبه بالا). ). مثال. هنوز نخوان :))) اعداد واقعی در حافظه کامپیوتر.  در حال توسعه!!!  - 2 در پایین، بیت های این عدد باینری کسری با رنگ قرمز شماره گذاری شده اند - در مجموع 18 بیت (رقم) از این عدد داریم. با نگاهی به آینده، می خواهم توجه داشته باشم که اعداد کسری به روشی کاملاً متفاوت در حافظه رایانه ذخیره می شوند - این بعداً مورد بحث قرار خواهد گرفت. در ضمن، بیایید نحوه تبدیل اعداد از یک سیستم عددی به سیستم دیگر را بیاموزیم. 2. تبدیل اعداد صحیح و کسر از سیستم اعشاری به سیستم باینری و بالعکس. 2.1 تبدیل از اعشاری به باینری. 2.1.1 اعداد صحیح. برای تبدیل یک عدد اعشاری صحیح به سیستم اعداد باینری، باید این عدد را بر 2 تقسیم کنید، باقیمانده تقسیم را یادداشت کنید (بسته به زوج یا فرد بودن عدد همیشه برابر با 0 یا 1 است). و نتیجه تقسیم را دوباره بر 2 تقسیم کنید، دوباره باقیمانده تقسیم را بنویسید (0 یا 1) و نتیجه تقسیم دوم را دوباره بر 2 تقسیم کنید.به همین ترتیب ادامه دهید تا نتیجه تقسیم برابر با یک شود. در مرحله بعد، تمام صفرها و یک های به دست آمده را به ترتیب معکوس می نویسیم و با آخرین نتیجه تقسیم شروع می کنیم که همیشه برابر با 1 است . نتیجه نهایی تقسیم ترتیبی هر عدد صحیح بر 2 همیشه یک (1) خواهد بود! اگر نتیجه بزرگتر از 1 باشد، این نتیجه را بر 2 تقسیم می کنیم تا در نتیجه یک به دست آوریم. و نتیجه تقسیم بر 2 فقط در یک مورد می تواند صفر (0) باشد - این تقسیم خود صفر بر 2 است. مثال. بیایید عدد 145 را از سیستم اعشاری به باینری تبدیل کنیم. 145/2 = 72 (باقيمانده 1 ) 72/2 = 36 (باقيمانده 0 ) 36/2 = 18 (باقيمانده 0 ) 18/2 = 9 (باقيمانده 0 ) 9/2 = 4 (باقيمانده 1 ) 4/2 = 2 (باقی مانده 0 ) 2/2 = 1 (باقی مانده 0 ) اکنون عدد باینری خود را به ترتیب معکوس "جمع آوری" می کنیم. ما شماره 10010001 را دریافت می کنیم. تمام شد! نکته جالب توجه 1. بیایید عدد 1 را از سیستم اعشاری به باینری تبدیل کنیم. در سیستم باینری، این عدد به صورت 1 نیز نوشته می شود. بالاخره نتیجه نهایی تقسیم بر 2 که باید برابر با 1 باشد، قبلاً برابر با خود عدد 1 است. 110 = 12 تفاوت های ظریف جالب 2. اجازه دهید تبدیل عدد 0 از سیستم اعشاری تا باینری. در سیستم باینری، این عدد نیز به صورت 0 نوشته خواهد شد. 010 = 0₂ 2.1.2 اعداد کسری. چگونه اعداد کسری را به باینری تبدیل کنیم؟ برای تبدیل کسر اعشاری به سیستم اعداد دودویی، باید: الف) کل قسمت کسر را طبق الگوریتم مطالعه شده در بند 2.1.1 به سیستم دودویی تبدیل کنید ب) قسمت کسری کسر را در 2 ضرب کنید ، بنویسید . رقم حاصل از نتیجه قبل از نقطه اعشار (همیشه مساوی 0 یا 1 است که منطقی است)، سپس فقط قسمت کسری حاصل را در 2 ضرب کنید، دوباره رقم حاصل را قبل از اعشار (0 یا 1) یادداشت کنید و به همین ترتیب تا کسری ادامه دهید. بخشی از حاصل ضرب برابر با 0 یا تا تعداد اعشار مورد نیاز ( دقت لازم ) می شود (برابر تعداد ضرب در 2). سپس باید دنباله حاصل از صفرها و یک های نوشته شده را به ترتیب بعد از نقطه جداکننده اعداد صحیح و کسری عدد واقعی (کسری) یادداشت کنید. مثال 1. عدد 2.25 (2 امتیاز 25 صدم) را از سیستم اعشاری به سیستم باینری تبدیل می کنیم. در سیستم باینری کسر برابر با 10.01 خواهد بود . چگونه این را به دست آوردیم؟ این عدد از یک قسمت صحیح (تا یک نقطه) تشکیل شده است - این 2 است و یک قسمت کسری - این 0.25 است. 1) ترجمه کل قسمت: 2/2 = 1 (باقی مانده 0 ) کل قسمت 10 خواهد شد . 2) ترجمه جزء کسری. 0.25 * 2 = 0.5 (0) 0.5 * 2 = 1.0 (1) قسمت کسری در نتیجه ضرب متوالی در 2 برابر با 0 شد. ضرب را متوقف می کنیم. اکنون بخش کسری را به ترتیب "جمع آوری" می کنیم - در سیستم باینری 0.01 می گیریم. 3) اعداد صحیح و کسری را اضافه کنید - دریافت می کنیم که کسر اعشاری 2.25 برابر با کسری باینری 10.01 خواهد بود . مثال 2. عدد 0.116 را از سیستم اعشاری به سیستم باینری تبدیل می کنیم. 0.116 * 2 = 0.232 (0) 0.232 * 2 = 0.464 (0) 0.464 * 2 = 0.928 (0) 0.928 * 2 = 1.856 (1) //قسمت صحیح این نتیجه را رد کنید 0.811 = 0.811 *. ) // حذف کل قسمت این نتیجه 0.712 * 2 = 1.424 (1) // حذف کل قسمت این نتیجه 0.424 * 2 = 0.848 (0) همانطور که می بینیم، ضرب ادامه دارد و ادامه می یابد ، قسمت کسری حاصل برابر 0 نمی شود. سپس تصمیم می گیریم کسر اعشاری خود را با دقت 7 رقم اعشار (بیت) بعد از نقطه (در قسمت کسری) به باینری تبدیل کنیم. بیایید آنچه را که در مورد بیت های بی اهمیت مطالعه کردیم به یاد بیاوریم - هر چه بیت (بیت) از کل قسمت فاصله داشته باشد، نادیده گرفتن آن برای ما آسان تر است (توضیحات در بخش 1 سخنرانی، چه کسی فراموش کرده است). کسری باینری 0.0001110 را با دقت 7 بیت بعد از نقطه بدست می آوریم. 2.2 تبدیل از باینری به اعشاری. 2.2.1 اعداد صحیح. برای ترجمه کلعدد از سیستم اعداد دودویی تا اعشاری، لازم است این عدد را به ارقام (بیت) تقسیم کرده و هر رقم (بیت) را در عدد 2 ضرب کنیم تا یک درجه مثبت معین (این درجه شروع به شمارش از راست به چپ از کم‌اهمیت‌ترین مقدار می‌کند. (بیت سمت راست) و از 0 شروع می شود . به عبارت دیگر، توان دو برابر است با تعداد یک بیت داده شده (اما این قانون نانوشته فقط در مورد تبدیل اعداد صحیح قابل استفاده است ، زیرا برای اعداد کسری شماره گذاری بیت ها از قسمت کسری شروع می شود که ترجمه می شود. به سیستم اعشاری متفاوت است ). در مرحله بعد باید محصولات به دست آمده را اضافه کنید. مثال. بیایید عدد باینری 110011 را به سیستم اعداد اعشاری تبدیل کنیم. 110011₂ = 1*25 + 1*24 + 0*2³ + 0*2² + 1*2¹ + 1*2º = 32 +16 +0 + 0 + 2 + 1 = 5110 در نتیجه عدد 51 را به دست می آوریم. سیستم دودویی. برای اطلاع در زیر جدولی از توان های اول عدد 2 آورده شده است . هنوز نخوان :))) اعداد واقعی در حافظه کامپیوتر.  در حال توسعه!!!  - 5 ! لطفاً توجه داشته باشید که توان صفر یک عدد همیشه 1 است. 2.2.2 اعداد کسری. برای تبدیل یک عدد کسری (واقعی) باینری به اعشاری ، باید: الف) قسمت صحیح آن را طبق الگوریتم پاراگراف 2.2.1 به اعشار تبدیل کنید . ب) قسمت کسری آن را به صورت زیر ترجمه کنید. لازم است قسمت کسری را به صورت مجموع حاصل ضرب ارقام دو به یک توان منفی معین ارائه کنیم (قدرت اولین رقم بعد از نقطه (بعد از کل کسری) برابر با 1- خواهد بود. برای رقم دوم بعد از نقطه برابر با 2- و غیره خواهد بود. در نتیجه این مقدار جزء کسری عدد در سیستم اعشاری خواهد بود. مثال. بیایید عدد 10111.01 را به سیستم باینری تبدیل کنیم. 10111.01₂ = (1*24 + 0*2³ + 0*2² + 1*2¹ + 1*2º) . (0*2ˉ¹ + 1*2ˉ²) = (16 + 0 + 4 + 2 + 1) . (0 + 0.25) = 23.2510 در نتیجه، عدد 23.25 را در سیستم اعداد اعشاری به دست می آوریم. جدول اولین توان های منفی 2 در زیر آورده شده است. هنوز نخوان :))) اعداد واقعی در حافظه کامپیوتر.  در حال توسعه!!!  - 7 2.2.3 فرمول کلی برای تبدیل اعداد از باینری به اعشاری. بیایید یک فرمول کلی برای تبدیل اعداد از دودویی به اعشاری (اعم از عدد صحیح و کسری) ارائه دهیم. هنوز نخوان :))) اعداد واقعی در حافظه کامپیوتر.  در حال توسعه!!!  - 4 که در آن A یک عدد در سیستم اعداد باینری است. پایه سیستم اعداد 2 است (به این معنی که هر بیت در 2 در توان ضرب می شود). n- تعداد ارقام صحیح (بیت) ؛ m تعداد ارقام کسری (بیت) عدد است . اولین بیت از قسمت عدد صحیح از نقطه تقسیم با رنگ قرمز مشخص شده است. همیشه در توان صفر در 2 ضرب می شود. بیت بعدی قبل از آن (سمت چپ) در توان اول و غیره در 2 ضرب می شود. اولین بیت از قسمت کسری از نقطه تقسیم با رنگ سبز مشخص شده است. همیشه در 2 ضرب در توان اول منهای است. بیت بعدی سمت راست در 2 به منهای توان دوم ضرب می شود و غیره. 3. نماد علمی: یک نماد عادی در هر دو سیستم. مانتیس، توان، درجه توان. 3.1 شکل نمایی نوشتن یک عدد. پیش از این، ما یک طرح دقیق برای ثبت اعداد موقعیتی با رقم مطالعه کردیم. بیایید عدد 0.0000000000000000000016 را در نظر بگیریم . دارای ورودی بسیار طولانی در فرم استاندارد است . و به صورت نمایی به این صورت خواهد بود: 1.6 * 10ˉ²¹ پس شکل نمایی یک عدد چیست و چگونه یک عدد را در این شکل نشان دهیم؟ نماد علمی برای یک عدد نمایش اعداد واقعی به عنوان مانتیس و توان است . مناسب برای نمایش اعداد بسیار بزرگ و بسیار کوچک و همچنین برای یکسان سازی نوشته آنها. N = M * pⁿ که در آن N عددی است که باید نوشته شود، M مانتیس عدد است ، p پایه (برابر با پایه سیستم اعداد عدد داده شده)، n (عدد صحیح) مرتبه (درجه ) است. ، می تواند مثبت و منفی باشد)، p به توان n اعداد مشخصه است (نما، یعنی پایه افزایش یافته به توان (ترتیب)). یک تفاوت ظریف مهم. اگر قسمت صحیح عدد اعشاری با 0 متفاوت باشد ، ترتیب (درجه) توان مثبت خواهد بود ، اگر قسمت صحیح برابر با 0 باشد ، درجه توان منفی خواهد بود . 3.2 شکل عادی و نرمال شده نوشتن اعداد. شکل عادی یک عدد شکلی است که در آن آخوندک (بدون در نظر گرفتن علامت) در نیم فاصله [0,1]، یعنی 0 <= M < 1 قرار دارد. این شکل نوشتاری دارای یک اشکال : برخی از اعداد به صورت مبهم نوشته می شوند (برای مثال، 0.0001 را می توان به صورت 0.000001*10²، 0.00001⋅10¹، 0.0001⋅10º، 0.001⋅10ˉ¹ و غیره نوشت). بنابراین، شکل دیگری از ضبط گسترده است (به ویژه در علوم کامپیوتر) - عادی شده است، که در آن مانتیس یک عدد اعشاری مقادیری از 1 (شامل) تا 10 (انحصاری) می گیرد ، یعنی 1 <= M < 10 (به طور مشابه ، آخوندک یک عدد باینری مقادیر 1 تا 2 را می گیرد. ). به عبارت دیگر، مانتیس در سیستم اعشاری باید یک عدد کسری از 1.0 (شامل) تا 10 (انحصاری) باشد ، یعنی. قسمت صحیح آخوندک باید دارای یک رقم باشد و قسمت کسری از نظر ریاضی محدود نیست. مزیت فرم نرمال شده این است که، بنابراین، هر عددی (به جز 0) به روشی منحصر به فرد نوشته می شود. اشکال این است که نمایش 0 در این شکل غیرممکن است، بنابراین نمایش اعداد در علوم کامپیوتر یک علامت (بیت) ویژه برای عدد 0 ارائه می دهد. 3.3 نمونه هایی از نوشتن اعداد اعشاری به صورت عادی شده نمایی. بیایید به نمونه هایی نگاه کنیم. مثال 1. بیایید عدد اعشاری 1015000 (یک میلیون و پانزده هزار) را به صورت عادی شده نمایی بنویسیم. سیستم اعداد این عدد اعشاری است، بنابراین پایه 10 خواهد بود . بیایید مانتیس را انتخاب کنیم . برای این کار عدد را به صورت کسری تصور کنید که قسمت کسری آن برابر با صفر خواهد بود (چون عدد یک عدد صحیح است): 1000000.0. اگر قسمت صحیح عدد بزرگتر از 0 باشد ، نقطه را به سمت چپ موقعیت اولیه آن (در داخل قسمت صحیح) ببرید تا تنها یک رقم در قسمت صحیح باقی بماند . بعد از آن یک دوره می گذاریم. صفرهای ناچیز (در انتهای عدد) را کنار می گذاریم. مانتیس عدد برابر با 1.015 را بدست می آوریم . بیایید درجه (ترتیب) پایه عدد را تعیین کنیم. نقطه ما که قسمت های عدد صحیح و کسری را از هم جدا می کند چند موقعیت به سمت چپ جابجا شده است؟ برای شش موقعیت این به این معنی است که ترتیب 6 خواهد بود . در این حالت ترتیب مثبت است (نقطه را در قسمت صحیح عدد با 0 جابجا کردیم). ورودی نهایی در فرم نرمال شده: 1.015 * 106 . می توانیم این عدد را به این شکل بنویسیم: 1.015E6 (که در آن E6 نماگر یک عدد اعشاری است، یعنی 10 به توان 6). بیایید خودمان را محک بزنیم . نماد نمایی برای یک عدد چیزی نیست جز حاصل ضرب یک عدد (مانتیسا) و یک عدد دیگر (نما). اگر 1.015 را در 106 ضرب کنید چه اتفاقی می افتد؟ 1.015*106 = 1.015*1000000 = 1015000 . درست است. این رویکرد (نرمال شده) به ایجاد یک رکورد بدون ابهام کمک می کنداعداد به شکل نمایی، همانطور که در بالا نشان داده شد. مثال 2. بیایید عدد واقعی اعشاری 0.0098 را به صورت نرمال شده بنویسیم. بیایید پایه عدد را برجسته کنیم - برابر با 10 (سیستم اعداد اعشاری) است. بیایید مانتیس عدد را انتخاب کنیم - برابر با 9.8 است (قسمت صحیح عدد برابر با صفر است، به این معنی که نقطه را به سمت راست به اولین رقم مهم منتقل می کنیم (که در محدوده 1 تا 9 قرار دارد) ترتیب عدد را تعیین می کنیم - نقطه را سه موقعیت جابه جا کردیم، یعنی ترتیب 3 است . مثبت است یا منفی؟ ترتیب (قدرت) منفی خواهد بود . رکورد نهایی عدد به شکل نرمال شده 9.8 * 10ˉ³ یا 9.8E-3 است . بیایید دوباره خودمان را بررسی کنیم. 9.8 را در 10ˉ³ ضرب کنیم. 9.8 * 10ˉ³ = 9.8 * 0.001 = 0.009 درست است. مثال 3. بیایید عدد واقعی اعشاری 3.56 را به صورت عادی بنویسیم. پایه عدد را انتخاب کنید - برابر با 10 (سیستم اعداد اعشاری) است. مانتیس عدد را انتخاب کنید - برابر است با ... 3.56 (عدد صحیح) بخشی از عدد یک رقمی است، نه برابر 0. این بدان معنی است که نقطه نیازی به جابجایی به جایی ندارد، خود عدد مانتیس خواهد بود.) بیایید ترتیب پایه را برجسته کنیم: مانتیس با چه عددی باید ، برابر خود عدد ضرب شود تا تغییر نکند؟ در هر واحد. این به این معنی است که ترتیب صفر خواهد بود. رکورد نهایی عدد در فرم نرمال شده 3.56 * 10º یا 3.56E0 است. 4. ذخیره اعداد واقعی در حافظه کامپیوتر: شناور و دو برابر. 4.1 انواع شناور و دوبل. بیایید به بخش کلیدی سخنرانی خود برویم. همانطور که می دانیم، دو نوع اعداد واقعی در جاوا وجود دارد: float و double . نوع شناور 32 بیت در حافظه کامپیوتر اشغال می کند و می تواند مقادیری را در محدوده [3.4E-38; 3.4E+38) (به عبارت دیگر، در محدوده 3.4*10ˉ³8 (شامل) تا 3.4 * 1038 (به استثنای)). نکته مهم 1. اعداد شناور می توانند مثبت یا منفی باشند. این محدوده در بالا برای نشان دادن ماژول های اعداد موجود در محدوده شناور ارائه شده است. تفاوت مهم 2. 1038 تقریباً برابر با 2127 است ، 10 ˉ38 تقریباً برابر با 2ˉ127 است . بنابراین، فاصله مقادیر مطلق اعداد شناور را می توان به صورت [3.4 * 2ˉ127 نوشت؛ 3.4 * 2¹27). نوع دوگانه دو برابر حافظه کامپیوتر را اشغال می کند -64 بیت و می تواند مقادیر اعشاری را در محدوده [-1.7E+308; 1.7E+308) به ترتیب. 4.2 شکل نرمال شده نمایی اعداد باینری. می دانیم که اعداد به شکل باینری در حافظه کامپیوتر ذخیره می شوند. بنابراین، بیایید عدد 1560.256 (نوع شناور) را بگیریم و آن را به صورت موقعیتی به سیستم باینری تبدیل کنیم: 11000011000.01000001100 . ممکن است فکر کنید که به این ترتیب در حافظه رایانه ذخیره می شود. اما این درست نیست! در حافظه کامپیوتر، انواع شناور و دوگانه ( انواع ممیز شناور واقعی ) به صورت نرمال شده نمایی ذخیره می شوند ، اما پایه توان به جای 10، 2 ​​است. این به این دلیل است که همانطور که در بالا گفته شد، تمام داده ها در کامپیوتر به شکل باینری (بیت) نمایش داده می شود. مقدار معینی از حافظه کامپیوتر به یک عدد اختصاص داده می شود. بیایید عدد مثبت 15.2 را به شکل نمایی نرمال شده نشان دهیم: 1.52*10¹ . در مرحله بعد، بیایید 1111.00110011001 دودویی آن را نیز با نماد نرمال شده نمایی، با استفاده از همان الگوریتم نشان دهیم: 1) پایه برابر با 2 خواهد بود 2) مانتیس برابر با 1.11100110011001 3) درجه مثبت و برابر با 3 خواهد بود. (نقطه 3 بیت به چپ منتقل می شود) در سیستم اعشاری. بیایید آن را به سیستم باینری تبدیل کنیم: 11 . بنابراین در فرم نرمال شده نمایی باینری 1.11100110011001 * 2¹¹ خواهد بود . 4.3 ذخیره شکل باینری نرمال شده نمایی یک عدد شناور در حافظه کامپیوتر. بنابراین، ما متوجه شدیم که یک عدد واقعی در حافظه کامپیوتر به شکل باینری نرمال شده نمایی ذخیره می شود . در حافظه چگونه به نظر می رسد؟ بیایید نوع شناور را در نظر بگیریم . کامپیوتر برای هر عدد شناور 32 بیت اختصاص می دهد . آنها به شرح زیر توزیع می شوند . این شکل به صورت شماتیک حافظه اختصاص داده شده برای یک عدد شناور 32 بیتی در یک کامپیوتر را نشان می دهد. هنوز نخوان :))) اعداد واقعی در حافظه کامپیوتر.  در حال توسعه!!!  - 5 شماره گذاری بیت با رنگ قرمز نشان داده شده است . سبز نشان دهنده یک قطعه حافظه اختصاص داده شده (1 بیت) برای ذخیره علامت عدد است. زرد نشان دهنده تکه ای از حافظه اختصاص داده شده برای ذخیره قدرت جابجا شده (ترتیب) شکل نمایی عدد (8 بیت) است. آبینشان دهنده یک قطعه از حافظه اختصاص داده شده برای ذخیره مانتیس نرمال شده یک عدد بدون واحد ضمنی (23 بیت) است. بیایید نگاه دقیق تری بیندازیم. 1) بیت علامت. مهمترین بیت (اول از سمت چپ) همیشه برای ذخیره علامت عدد اختصاص داده می شود (اگر عدد 1 منفی باشد و اگر عدد مثبت باشد 0). یک استثنا ممکن است عدد صفر باشد - در برنامه نویسی، صفر می تواند هم منفی و هم مثبت باشد . 2) سپس بیت های درجه (ترتیب) توان با پایه 2 می آیند . برای این کار 8 بیت اختصاص داده شده است. درجه توان اعداد شناور ، همانطور که می دانیم، می تواند هم منفی باشد (برای اعدادی که قسمت صحیح آنها 0 است، به بند 3.3 مراجعه کنید) و هم مثبت (برای اعدادی که قسمت صحیح آنها با صفر متفاوت است) و از 2ˉ127 تا 2127 متغیر است . در تئوری، باید یک بیت را برای تعیین علامت توان اختصاص دهیم، همانطور که در مورد بیت علامت وجود دارد. اما این درست نیست. برای اینکه کمی در تعیین علامت توان تلف نشود، اعداد شناور به توان نیم بایت +127 (0111 1111) یک افست اضافه می کنند . بنابراین، کامپیوتر به جای محدوده ای از توان ها از 2ˉ127 تا 2127، طیفی از توان ها را از 0 تا +254 ذخیره می کند - همه مقادیر توان مثبت هستند ، نیازی به هدر دادن یک بایت اضافی در علامت نیست. معلوم می شود که مقدار توان به نصف نسبت به مقدار ممکن جابجا شده است . به این معنی که برای به دست آوردن مقدار واقعی توان، باید این افست را از مقدار ذخیره شده در حافظه کم کنید . اگر مقدار توان ذخیره شده در حافظه کمتر از افست (+127) باشد، توان منفی است: این منطقی است. مثال. بیایید یک شیفت درجه منفی 18 را انجام دهیم . افست +127 را به آن اضافه می کنیم، مقدار درجه +108 را می گیریم (در محاسبه درجه 0 را فراموش نکنید). بیایید درجه را به شکل باینری تبدیل کنیم: 1101100 اما 8 بیت حافظه برای درجه اختصاص داده شده است و در اینجا یک عدد 7 بیتی بدست می آوریم. به جای رقم خالی و خالی (بیت) بالا، کامپیوتر 0 را اضافه می کند. نتیجه این است که این درجه در حافظه کامپیوتر به عنوان 01101100 ذخیره می شود . بیایید ببینیم: +108 < +127، به این معنی که درجه در واقع منفی است. جدول جالب زیر را در نظر بگیرید: تمام مقادیر ممکن توان های اشکال نرمال شده اعداد شناور را در سیستم های باینری و اعشاری نشان می دهد. همانطور که می بینیم، در سیستم باینری +127 دقیقاً نیمی از یک بایت کامل (8 بیت) است. 3) 23 بیت باقیمانده برای مانتیس رزرو شده است هنوز نخوان :))) اعداد واقعی در حافظه کامپیوتر.  در حال توسعه!!!  - یازده. اما برای یک آخوندک باینری نرمال شده، مهم ترین بیت (معروف به قسمت صحیح مانتیس نرمال شده) همیشه برابر با 1 است (به نام ضمنی یک )، زیرا تعداد مانتیس در محدوده 1<=M<2 قرار دارد (و همچنین بند 2.1.1 سخنرانی را به یاد بیاورید). تنها استثنا عدد 0 است. نوشتن یک واحد در 23 بیت اختصاص داده شده و هدر دادن حافظه فایده ای ندارد، بنابراین باقیمانده مانتیس (قسمت کسری آن) در 23 بیت اختصاص داده شده نوشته می شود. به نظر می رسد که اساساً بخش قابل توجهی از عدد شناور دارای طول 24 است که یک بیت کمتر از آن ذخیره می شود. یک نکته مهم به یاد داشته باشید که هنگام تبدیل اعداد کسری اعشاری به اعداد باینری، بخش کسری در سیستم باینری اغلب بزرگ است. و ما فقط 32 بیت برای ذخیره یک عدد شناور داریم. در این حالت، کمترین و کم‌اهمیت‌ترین ارقام کسر باینری (بند 2.1.2 این سخنرانی را به خاطر بسپارید) در حافظه اختصاص‌یافته گنجانده نمی‌شود و رایانه از آنها غفلت می‌کند . دقت عدد از بین خواهد رفت ، اما، می بینید، حداقل است. به عبارت دیگر، دقت شناورهای کسری 6-7 رقم اعشار است . 4.4 ذخیره شکل باینری نرمال شده نمایی از عدد دو برابر در حافظه کامپیوتر. اعداد واقعی از نوع double مانند اعداد شناور، به استثنای برخی ویژگی ها، در حافظه کامپیوتر ذخیره می شوند . یک عدد دوگانه دارای 64 بیت در حافظه کامپیوتر است. آنها به صورت زیر توزیع می شوند (همچنین به ترتیب از چپ به راست): 1) بیت علامت (به بند 4.3 مراجعه کنید). می دانیم که تعداد این بیت 63 خواهد بود . 2) درجه (ترتیب). اعداد دوتایی 11 بیت برای ذخیره آن اختصاص داده می شوند . یک جابجایی درجه نیز انجام می شود ، اما برای اعداد دو برابر برابر با 1023 خواهد بود . 3) مانتیس (قسمت مهم). اعداد دوتایی 52 بیت (رقمی) برای ذخیره آن اختصاص داده می شوند. همچنین، قسمت صحیح دقیق مانتیس ( واحد ضمنی ) در حافظه ذخیره نمی شود . همچنین شایان ذکر است که دقت دوتایی کسری حدود 16 رقم اعشار است . 4.5 نمونه هایی از نمایش یک عدد واقعی از سیستم اعشاری در حافظه کامپیوتر. و نکته پایانی سخنرانی ما مثالی از تبدیل یک عدد کسری از سیستم اعداد اعشاری به شکل ذخیره آن در حافظه کامپیوتر برای تثبیت درک موضوع خواهد بود. مثال 1. یک عدد بگیرید -4.25 نوع شناور. بیایید آن را به شکل نرمال شده نمایی در سیستم اعداد باینری ارائه کنیم، و همه چیزهایی که در این سخنرانی به آن پرداختیم را به خاطر بسپاریم. 1) قسمت صحیح عدد را به شکل باینری تبدیل کنید : 4/2 = 2 (باقیمانده تقسیم 0 ) 2/2 = 1 (باقیمانده تقسیم 0 ) قسمت صحیح در سیستم باینری برابر با 100 خواهد بود. 2) قسمت کسری عدد را به دوتایی تبدیل کنید . 0.25*2 = 0.5 ( 0 ) 0.5*2 = 1.0 ( 1 ) قسمت کسری در سیستم باینری برابر با 0.01 خواهد بود. 3) بنابراین، -4.2510 = -100.012 . 4) بیایید عدد -100.01₂ را در سیستم اعداد باینری به شکل نرمال شده نمایی تبدیل کنیم (به این معنی که پایه توان 2 خواهد بود). -100.01₂ = -1.0001 *2² بیایید مقدار درجه را از فرمت اعشاری به باینری تبدیل کنیم . 2/2= 1 (باقيمانده 0 ) درجه 10₂ است. دریافتیم که عدد -4.2510 در شکل نرمال شده نمایی باینری آن برابر با -1.0001 * 2¹º خواهد بود . بیایید بنویسیم که چگونه در حافظه کامپیوتر به نظر می رسد. بیت علامت 1 (عدد منفی) خواهد بود . افست توان برابر است با 2+127 = 12910 = 10000001₂ ما یک ضمنی را از مانتیس حذف می کنیم ، 0001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000012910 = 12910 را حذف می کنیم . خط پایین. 1 10000001 000100000000000000000 - اینگونه است که شماره -4.25 در حافظه رایانه ذخیره می شود. مثال 2. عدد شناور 0.7510 را به فرمت ذخیره سازی باینری در حافظه کامپیوتر تبدیل کنید . نتیجه باید 0 01111110 1000000000000000000000000 باشد . از توجه شما متشکرم
نظرات
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION