نمايش اعداد در کامپيوتر چهار عمل اصلي اصول كامپيوتر 1
نمايش اعداد اعداد ده دهي، رايجترين شکل نمايش اعداد هستند هر عدد به صورت ضرايب توانهايي از 10 نمايش داده مي شود کامپيوترها از نمايش دو دويي استفاده مي کنند اين نمايش به آساني با سخت افزار قابل پياده سازي است هر رقم دو دويي يک رقم صفر يا يک است که يک بيت نام دارد bit = binary digit Byte = 8 bits پيچيدگي کمتري نسبت به نمايش ده دهي دارد
نمايش اعداد صحيح اعداد صحيح بدون علامت / مثبت يا صفر براي نمايش داده هاي نا منفي استفاده مي شوند Characters, Ages, Date,… مثال: عدد 5 در مبناي دو با 8 بيت: : 0000 0101 با Nبيت، مي توان اعداد بازه 0.. 2N -1را نشان داد 8 بيت ( 1 بايت ) بازه 0تا 255 را پوشش مي دهد اعداد علامت صحيح دار نمايش با بيت علامت Sign Bit نمايش با مكمل 2 Two’s Complement
نمايش اعدد منفي با بيت علامت sign 1 bit Number, 7bits Examples: 52 = 0000 0101 , -52 = 1000 0101 N bits Range -2N-1 -1... 2N-1 -1 مشكل : صفر دو نمايش دارد 1000 0000 = 0 = 0000 0000 الگوريتم تفريق پيچيده مي شود
مكمل 2 عدد k بيتي N برابر است با2k – N : مثال: comp(5)= 28 - 5 = 251 5= 0000 0101 comp(5) =251 = 1111 1011 comp(128) = 1000 0000 = 256 – 128 = 128 براي محاسبه مكمل 2 بيتهاي صفر را به يك و بيتهاي يك را به صفر تبديل مي كنيم عدد حاصل را با (1) جمع مي كنيم
مكمل 2 نقش در محاسبات: اعداد منفي به صورت مكمل 2 ذخيره مي شوند. بسادگي، عمل تفريق مشابه عمل جمع انجام مي شود. بيت انتهايي سمت چپ اعداد نشان دهنده علامت عدد است اگر يك باشد ، عدد منفي است بر خلاف بيت علامت، اين بيت در ساختار خود عدد نقش دارد و تنها نشان دهنده علامت نيست 0000 0101 1111 1011 = + 1 0000 0000 عدد 5 مكمل 2 عدد 5
اعداد اعشاري: Fractional Numbers Examples: 456.7810 = 4 x 102 + 5 x 101 + 6 x 100 + 7 x 10-1+8 x 10-2 1011.112 = 1 x 23 + 0 x 22 + 1 x 21 + 1 x 20 + 1 x 2-1 + 1 x 2-2 = 8 + 0 + 2 + 1 + 1/2 + ¼ = 11 + 0.5 + 0.25 = 11.7510 تبديل از مبناي 2 به مبناي 10 Examples: 111.112 = 1 x 22 + 1 x 21 + 1 x 20 + 1 x 2-1 + 1 x 2-2 = 4 + 2 + 1 + 1/2 + ¼ = 7.7510 Examples: 11.0112 22 21 20 2-1 2-2 2-3 4 2 1 ½ ¼ 1/8 2 1 0 -1 -2 -3 x
تبديل مبناي 10 به مبناي 2 4 2 1 1/2 1/4 1/8 Examples: 7.7510 = (?)2 تبديل مبناي 10 به مبناي 2 Examples: 7.7510 = (?)2 Conversion of the integer part: repeated division by 2 7 / 2 = 3 (Q), 1 (R) 3 / 2 = 1 (Q), 1 (R) 1 / 2 = 0 (Q), 1 (R) 710 = 1112 Conversion of the fractional part: perform a repeated multiplication by 2 and extract the integer part of the result 0.75 x 2 =1.50 extract 1 0.5 x 2 = 1.0 extract 1 0.7510 = 0.112 0.0 stop Combine the results from integer and fractional part, 7.7510 = 111.112 How about choose some of Examples: try 5.625B write in the same order 4 2 1 1/2 1/4 1/8 =0.5 =0.25 =0.125
اعداد اعشاري Exercise 1: Convert (0.625)10 to its binary form Solution: Solution: 0.625 x 2 = 1.25 extract 1 0.25 x 2 = 0.5 extract 0 0.5 x 2 = 1.0 extract 1 0.0 stop (0.625)10 = (0.101)2 0.6 x 2 = 1.2 extract 1 0.2 x 2 = 0.4 extract 0 0.4 x 2 = 0.8 extract 0 0.8 x 2 = 1.6 extract 1 0.6 x 2 = (0.6)10 = (0.1001 1001 1001 …)2
اعداد اعشاري Exercise 3: Convert (0.8125)10 to its binary form Solution: 0.8125 x 2 = 1.625 extract 1 0.625 x 2 = 1.25 extract 1 0.25 x 2 = 0.5 extract 0 0.5 x 2 = 1.0 extract 1 0.0 stop (0.8125)10 = (0.1101)2
نمايش اعداد اعشاري x = f • Base E f : mantissa(مانتيس) E: exponent(نما) Example: 125.3210 = 0.12532 • 103 mantissa - 125.3210 = - 0.12532 • 103 0.054610 = 0.546 • 10 –1 مانتيس به صورت نرمال نشان داده مي شود. چون در فرم دودويي رقم قبل از صفر هميشه 1 است، اين رقم ذكر نمي شود
نرمال سازي اعداد Example: 134.1510 = 0.13415 x 103 0.002110 = 0.21 x 10-2 101.11B = .1011 x 23 or 1.011 x 22 (hidden1) 0.011B = .11 x 2-1 or 1.1 x 2-2 (hidden1) AB.CDH= .ABCD x 162 0.00ACH= .AC x 16-2
نمايش اعداد اعشاري x = ± f • Base E - : 1 اگر از حافظه 16 بيتي براي نمايش نرمال شده اعداد اعشاري استفاده كنيم،از چپ به راست: اولين بيت نشان دهنده علامت عدد است ( 0: مثبت و 1: منفي) 11 بيت بعدي نشان دهنده فرم نرمال مانتيس هستند.( (f چهار بيت بعدي، نشان دهنده نماي عدد به اضافه 7 است (E). بدين شكل، نما هميشه مثبت يا صفر است20=7 (0111). 21=8 (1000), 2-1=6 (0110) x = ± f • Base E f = 1.?1?2?3?4…?11 ?12…?15 E : converted to binary, b1b2b3b4 MSB LSB ?1 ?2 ?3 ?4 ?11 ?10 ?9 ?8 ?7 ?5 ?6 b2 b3 b4 b1 + : 0 - : 1 Excess-7
نمايش عدد 1110.111010111111 در كامپيوتر: مثال گام اول نرمال سازي: نمايش عدد 1110.111010111111 در كامپيوتر: گام اول نرمال سازي: 1110.111010111111= +1.110111010111111 * 2 +3 گام دوم :محاسبه نما: 10=7+3 نمايش 16 بيتي: 0 11011101011 1010 exponent 4 bits sign 1 bit mantissa 11 bits
مثال – تفسير نمايش 0 11000000000 0100 B = 1.11B *2(4-7)=-3 = 0.00111B = 7/32 = 0.21875D
IEEE 754 Standard اين استاندارد در اغلب كامپيوترها مورد استفاده است عدد اعشاري از نوع float داراي 32 بيت است بيت علامت نشان دهنده علامت عدد است ( 1: منفي و صفر: مثبت) 23 بيت انتهايي نشان دهنده مانتيس است كه به صورت نرمال در آمده است. يعني رقم يك قبل از مميز آن نشان داده نمي شود 8 بيت مياني، نماي عدد را نشان مي دهد كه عدد 127 به آن اضافه شده است. اعداد اعشاري double به صورت مشابهي نگهداري مي شوند 1 sign bit 8 exponent 23 fraction 1 sign bit 11 exponent 52 fraction
IEEE 754 Standard حالات خاص: اگر نما و مانتيس صفر باشند، عدد صفر است اگر نما صفر باشد، 1 مخفي استفاده نمي شود اگر نما حداكثر مقدار خود را داشته باشد و مانتيس صفر باشد، عدد بي نهايت است اگر نما حداكثر مقدار خود را داشته باشد و مانتيس غير صفر باشد، عدد “تعريف نشده” است NaN = Not a Number 1 sign bit 8 exponent 23 fraction 1 sign bit 11 exponent 52 fraction
IEEE 754 Examples: Normalized Numbers IEEE 754 Standard IEEE 754 Examples: Normalized Numbers 0 1000 0011 0000 0000 0000 0000 0000 000 = 1 x 24 = 16 0 0011 0001 0000 0000 0000 0000 0000 000 = 1 x 2-78 = 3.3087e-24 0 1000 0001 0100 0000 0000 0000 0000 000 = 1.25 x 22 = 5
تمرين: نوع داده هاي پايه و دامنه آنها در زبان C++/JAVA چگونه است ؟