Բացասական զրո
Բացասական զրո, զրո համապատասխան նշանով: Սովորական թվաբանության մեջ 0 թիվը նշան չունի, այնպես որ −0, +0 և 0-ը համարժեք են։ Այնուամենայնիվ, հաշվարկներում որոշ թվերի ներկայացումներ թույլ են տալիս գոյություն ունենալ երկու զրո, որոնք հաճախ նշվում են −0 (բացասական զրո) և +0 (դրական զրոյով), որոնք համարվում են հավասար թվային համեմատական գործողություններով, բայց որոշակի գործողություններում հնարավոր տարբեր վարքագծով: Սա տեղի է ունենում ամբողջ թվերի համար նշանի մեծության և լրացնող թվերի ներկայացման մեջ և լողացող թվերի մեծ մասում: 0 թիվը սովորաբար կոդավորված է որպես +0, բայց դեռ կարող է ներկայացվել +0, -0 կամ 0-ով:
IEEE 754 ստանդարտը լողացող կետով թվաբանության համար (ներկայումս օգտագործվում է համակարգիչների և ծրագրավորման լեզուների մեծ մասի կողմից, որոնք աջակցում են լողացող կետով թվեր) պահանջում է և՛ +0, և՛ −0: Ստորագրված զրոներով իրական թվաբանությունը կարելի է համարել ընդլայնված իրական թվային գծի այնպիսի տարբերակ, որ 1/−0 = −∞ և 1/+0 = +∞; բաժանումը սահմանված չէ միայն ±0/±0 և ±∞/±∞ համար:
Բացասական նշանով զրոն արձագանքում է 0-ին ներքևից մոտենալու մաթեմատիկական վերլուծության հայեցակարգին որպես միակողմանի սահման, որը կարող է նշանակվել x → 0−, x → 0− կամ x → ↑0: «−0» նշումը կարող է օգտագործվել ոչ պաշտոնապես՝ նշելու բացասական թիվը, որը կլորացված է զրոյի: Բացասական զրո հասկացությունն ունի նաև որոշ տեսական կիրառություններ վիճակագրական մեխանիկայի և այլ առարկաների մեջ:
Ենթադրվում է, որ IEEE 754-ում ստորագրված զրոյի ընդգրկումը շատ ավելի հեշտ է դարձնում թվային ճշգրտության հասնելը որոշ կարևոր խնդիրների դեպքում,[1] n մասնավորապես բարդ տարրական ֆունկցիաներով հաշվելիս:[2] Մյուս կողմից, ստորագրված զրոյի հայեցակարգը հակասում է մաթեմատիկայում արված սովորական ենթադրությանը, որ բացասական զրոն նույն արժեքն է, ինչ զրոյականը: Ներկայացումները, որոնք թույլ են տալիս բացասական զրո, կարող են սխալների աղբյուր լինել ծրագրերում, եթե ծրագրային ապահովման մշակողները հաշվի չառնեն, որ թեև երկու զրոյական ներկայացումները թվային համեմատություններում իրենց հավասար են պահում, դրանք տարբեր արդյունքներ են տալիս որոշ գործողություններում:
Ներկայացուցչություններ
[խմբագրել | խմբագրել կոդը]Երկուական ամբողջ թվերի ձևաչափերը կարող են օգտագործել տարբեր կոդավորումներ: Լայնորեն օգտագործվող երկուսի կոմպլեմենտի կոդավորման մեջ զրոն անստորագիր է: Ամբողջ թվերի համար 1+7 բիթ նշանի և մեծության ներկայացման մեջ բացասական զրոն ներկայացված է բիթային տողով։ 8-բիթանոցների լրացման ներկայացման մեջ բացասական զրոն ներկայացված է բիթային տողով/ Այս բոլոր երեք կոդավորումներում դրական կամ անստորագիր զրոն ներկայացված է հետևյալով, սակայն վերջին երկու կոդավորումները (նշված զրոյով) հազվադեպ են ամբողջ թվերի ձևաչափերի համար: Ստորև նշված զրոյով ամենատարածված ձևաչափերը լողացող կետի ձևաչափերն են (IEEE 754 ձևաչափեր կամ նմանատիպ ձևաչափեր):
IEEE 754 երկուական լողացող կետի ձևաչափերում զրոյական արժեքները ներկայացված են կողմնակալ ցուցիչով և նշանակալից և երկուսն էլ զրո են: Բացասական զրոյի նշանի բիթը դրված է մեկ: Որոշ հաշվարկների արդյունքում կարելի է ստանալ բացասական զրո, օրինակ՝ բացասական թվի վրա թվաբանական ներհոսքի արդյունքում (այլ արդյունքներ նույնպես հնարավոր են), կամ −1,0×0,0, կամ պարզապես որպես −0,0։
IEEE 754 տասնորդական լողացող կետի ձևաչափերում բացասական զրոն ներկայացված է ձևաչափի ցանկացած վավեր ցուցիչով ֆորմատի միջակայքում, իսկական նշանակությունը՝ զրո, իսկ նշանի բիթը՝ մեկ:
Հատկություններ և բեռնաթափում
[խմբագրել | խմբագրել կոդը]IEEE 754 լողացող կետի ստանդարտը սահմանում է դրական զրոյի և բացասական զրոյի վարքագիծը տարբեր գործողությունների ժամանակ: Արդյունքը կարող է կախված լինել IEEE կլորացման ռեժիմի ընթացիկ կարգավորումներից:
Նշում
[խմբագրել | խմբագրել կոդը]Համակարգերում, որոնք ներառում են ինչպես ստորագրված, այնպես էլ անստորագիր զրոներ, նշումը
0
+
և
0
−
երբեմն օգտագործվում է ստորագրված զրոների համար:
Թվաբանություն
[խմբագրել | խմբագրել կոդը]Գումարը և բազմապատկումը փոխադարձ են, բայց կան որոշ հատուկ կանոններ, որոնք պետք է հետևել, ինչը նշանակում է, որ հանրահաշվական պարզեցման համար սովորական մաթեմատիկական կանոնները կարող են չկիրառվել: Այն
=
ստորև նշված նշանը ցույց է տալիս ստացված լողացող կետի արդյունքները (դա սովորական հավասարության օպերատոր չէ):
Բազմապատկելիս կամ բաժանելիս միշտ պահպանվում է նշանների սովորական կանոնը.
- (for տարբերվում է ±∞)
- (for տարբերվում է 0)
Նշված զրո գումարելու կամ հանելու հատուկ կանոններ կան.
- (for different from 0)
- (ցանկացած վերջավորության համար , −0երբ կլորացվում է դեպի բացասական )
Բացասական զրոյի պատճառով (և նաև, երբ կլորացման ռեժիմը դեպի վեր կամ վար է), −(x−y) և (−x) − (−y) արտահայտությունները լողացող կետով x և y փոփոխականների համար չեն կարող փոխարինվել y-ով։ − x. Այնուամենայնիվ (−0) + x-ը կարող է փոխարինվել x-ով՝ մոտակա կլորացմամբ (բացառությամբ այն դեպքերի, երբ x-ը կարող է ազդանշանային NaN լինել):
Որոշ այլ հատուկ կանոններ.
- [3]
- (հետևում է բաժանման նշանի կանոնին)
- (ոչ զրոյի համար 𝑥, հետևում է բաժանման նշանի կանոնին)
- (Համար կամ ընդհատում չէ անորոշ ձևի համար)
Ոչ զրոյական թվի բաժանումը զրոյի վրա սահմանում է բաժանումը զրոյի վրա, իսկ գործողությունը, որը արտադրում է NaN, սահմանում է գործողության անվավեր դրոշակ: Բացառության մշակիչը կանչվում է, եթե միացված է համապատասխան դրոշի համար:
Համեմատություններ
[խմբագրել | խմբագրել կոդը]Համաձայն IEEE 754 ստանդարտի, բացասական զրո և դրական զրոն պետք է համեմատվեն սովորական (թվային) համեմատական օպերատորների հետ, ինչպիսիք են C-ի և Java-ի == օպերատորները: Այդ լեզուներում կարող են անհրաժեշտ լինել ծրագրավորման հատուկ հնարքներ՝ երկու արժեքները տարբերելու համար.
- Մուտքագրեք համարը միացնելով ամբողջ թվի տիպին, որպեսզի նայեք նշանի բիթին բիթերի օրինակով;
- օգտագործելով ISO C copysign() ֆունկցիան (IEEE 754 copySign օպերացիա)՝ զրոյի նշանը որևէ ոչ զրոյական թվի պատճենելու համար.
- օգտագործելով ISO C signbit() մակրո (IEEE 754 isSignMinus գործողություն), որը ցույց է տալիս, թե արդյոք թվի նշանի բիթը սահմանված է.
- վերցնելով զրոյի փոխադարձը, որպեսզի ստացվի կամ 1/(+0) = +∞ կամ 1/(−0) = −∞ (եթե զրոյական բացառությամբ բաժանումը թակարդում չկա):
Նշում. ինտեգրալ տիպի ձուլումը միշտ չէ, որ կաշխատի, հատկապես երկուսի կոմպլեմենտ համակարգերի վրա:
Այնուամենայնիվ, որոշ ծրագրավորման լեզուներ կարող են տրամադրել այլընտրանքային համեմատական օպերատորներ, որոնք տարբերում են երկու զրոները: Սա, օրինակ, Java-ի Double wrapper դասի հավասար մեթոդի դեպքն է։[4]
Կլորացված արժեքներով, ինչպիսիք են ջերմաստիճանը
[խմբագրել | խմբագրել կոդը]Ոչ պաշտոնական ձևով, կարելի է օգտագործել «−0» նշումը բացասական արժեքի համար, որը կլորացվել է զրոյի: Այս նշումը կարող է օգտակար լինել, երբ բացասական նշանը նշանակալի է. օրինակ՝ Ցելսիուսի ջերմաստիճանը աղյուսակավորելիս, որտեղ բացասական նշանը նշանակում է ցրտից ցածր:
Վիճակագրական մեխանիկայի մեջ
[խմբագրել | խմբագրել կոդը]Վիճակագրական մեխանիկայի մեջ երբեմն օգտագործվում են բացասական ջերմաստիճաններ՝ նկարագրելու համար պոպուլյացիայի ինվերսիա ունեցող համակարգերը, որոնք կարելի է համարել դրական անսահմանությունից մեծ ջերմաստիճան, քանի որ բնակչության բաշխման ֆունկցիայի էներգիայի գործակիցը −1/Ջերմաստիճան է։ Այս համատեքստում −0 ջերմաստիճանը (տեսական) ավելի մեծ ջերմաստիճան է, քան ցանկացած այլ բացասական ջերմաստիճան, որը համապատասխանում է բնակչության ինվերսիայի (տեսական) առավելագույն հնարավոր չափին, հակառակ ծայրահեղությունը +0-ին:[5]
Նշումներ
[խմբագրել | խմբագրել կոդը]- ↑ William Kahan, "Branch Cuts for Complex Elementary Functions, or Much Ado About Nothing's Sign Bit", in The State of the Art in Numerical Analysis (eds. Iserles and Powell), Clarendon Press, Oxford, 1987.
- ↑ William Kahan, Derivatives in the Complex z-plane, p. 10.
- ↑ Cowlishaw, Mike (7 April 2009). «Decimal Arithmetic: Arithmetic operations – square-root». speleotrove.com (IBM Corporation). Վերցված է 7 December 2010-ին.
- ↑ «Double». Java™ Platform, Standard Edition 6 API Specification. Oracle Help Center. Արխիվացված օրիգինալից Aug 4, 2009-ին.
- ↑ Kittel, Charles and Herbert Kroemer (1980). Thermal Physics (2nd ed.). W. H. Freeman and Company. էջ 462. ISBN 0-7167-1088-9.
- «Floating point types». MSDN C# Language Specification. Արխիվացված է օրիգինալից Dec 6, 2005-ին. Վերցված է 15 October 2005-ին.
- «Division operator». MSDN C# Language Specification. Արխիվացված է օրիգինալից Nov 21, 2005-ին. Վերցված է 15 October 2005-ին.
- Thomas Wang (September 2000) [March 2000]. «Java Floating-Point Number Intricacies». Արխիվացված է օրիգինալից 2005-09-21-ին.
- Mike Colishaw (28 July 2008). «Decimal Arithmetic Specification, version 1.68». Speleotrove. Վերցված է 2008-08-14-ին. – a decimal floating-point specification that includes negative zero
Հետագա ընթերցում
[խմբագրել | խմբագրել կոդը]- Michael Ingrassia. «Fortran 95 SIGN Change». Sun Developer Network. Վերցված է October 15, 2005-ին. – the changes in the Fortran
SIGN
function in Fortran 95 to accommodate negative zero - «JScript data types». MSDN JScript. Վերցված է October 16, 2005-ին. – JScript's floating-point type with negative zero by definition
- Venners, Bill (1996-10-01). «Floating-point arithmetic». Learn Java. JavaWorld. Under the Hood. Վերցված է 2020-07-14-ին. – representation of negative zero in the Java virtual machine
- Bruce Dawson (25 February 2012). «Comparing floating point numbers, 2012 Edition». – how to handle negative zero when comparing floating-point numbers
- John Walker. «Minus Zero». UNIVAC Memories. Վերցված է October 17, 2005-ին. – one's complement numbers on the UNIVAC 1100 family computers