ఇది ఏమిటి? · bei.pm
ఈ విభాగంలో డేటా ఫార్మాట్లు మరియు రివర్స్ ఇంజనీరింగ్ గురించి వ్యాసాలు ఉన్నాయి.
కానీ ఇప్పుడు ఇలా ఉంది:
బయట చాలా ప్రోగ్రామింగ్ భాషలు ఉన్నాయి మరియు కొంతమంది వ్యక్తులు కొన్ని విషయాలను పూర్తిగా వేరే పేర్లతో తెలుసుకుంటారు - లేకపోతే వారి ప్రోగ్రామింగ్ భాష వాటిని వారి నుండి దూరంగా తీసుకువెళ్లడం వల్ల అత్యంత ప్రాథమిక విషయాల ఉనికిపై ఏమీ తెలియకపోవచ్చు.
tl;dr:
నా నోటేషన్ ప్రాథమికంగా C99 <stdint.h>
ఆధారంగా ఉంది. ఈ నోటేషన్తో ఎవరికైనా సహాయం అయితే, నా నోటేషన్తో కూడా వారు సులభంగా అర్థం చేసుకుంటారు.
పూర్తి సంఖ్య
ఇంటీజర్ అంటే సాధారణంగా మొత్తం సంఖ్యలు, అంటే దశాంశ భాగం లేకుండా ఉన్న సంఖ్యలు.
ఇంటీజర్లు డేటా ఫార్మాట్లలో సాధారణంగా ఒక స్థిర సంఖ్యా స్పెక్ట్రమ్, అంటే ఒక రిజొల్యూషన్లో నిర్వచించబడ్డాయి. దీన్ని నేను బిట్లలో సూచిస్తున్నాను - ఎందుకంటే "బైట్" మరియు దాని ఆధారంగా ఉండే రకాలు (వర్డ్, క్యూవర్డ్, ...) సాధారణంగా ప్లాట్ఫారమ్కు సంబంధించి ఉంటాయి.
అదే విధంగా, ఇంటీజర్ రకాలలో ప్రాకృతిక సంఖ్యలు (ℕ, అంటే, చిహ్నం లేకుండా - Unsigned) మరియు మొత్తం సంఖ్యలు (ℤ, అంటే, చిహ్నంతో - Signed) మధ్య విభజన జరుగుతుంది.
ఈ సమాచారం చిహ్నం (u
లేదా s
) ద్వారా గుర్తించబడుతుంది.
ఇది చిహ్నంతో కూడిన మొత్తం సంఖ్యలు ఒకటి కంప్లీమెంట్ లేదా రెండు కంప్లీమెంట్గా ప్రదర్శించబడవచ్చు.
ఇతర విధంగా చెప్పబడని యతే, రెండు కంప్లీమెంట్ని ఉపయోగిస్తారు, ఎందుకంటే ఇది ఆధునిక కంప్యూటర్ శాస్త్రంలో ప్రాధమిక ప్రదర్శనగా ఉంటుంది.
చిహ్నం లేని సంఖ్యలను నేను నా డాక్యుమెంటేషన్లో uint
గా సూచిస్తాను, తర్వాత ఇంచు గణనను Bitsలో సూచిస్తూ.
చిహ్నంతో కూడిన సంఖ్యలను నేను నా డాక్యుమెంటేషన్లో sint
గా సూచిస్తాను, అలాగే ఇంచు గణనను Bitsలో పేర్కొంటాను.
నేను పాత్రల కోసం "చార్" డేటా రకం ఉపయోగించడం మానుకుంటున్నాను, ఎందుకంటే పాత్రల శ్రేణులు సాధారణంగా ప్రత్యేకంగా అర్థం చేసుకోవడం కోసం ఇంటీజర్ విలువల శ్రేణులు మాత్రమే ఉంటాయి.
అవి కాబట్టి uint(8)[] గా ప్రదర్శించబడతాయి.
ఉదాహరణలు:
నోటేషన్ | C99 stdint.h -సమానమైనది |
వివరణ | సంఖ్యా పరిధి |
---|---|---|---|
uint(16) | uint16_t | అస్వీకృతinteger, 16 బిట్ పొడవు | 0 - 65.535 |
sint(8) | int8_t | స్వీకృత integer, 8 బిట్ పొడవు, రెండు కComplement | -126 - 127 |
uint(24) | uint32_t:24 | అస్వీకృత integer, 24 బిట్ పొడవు | 0 - 16.777.216 |
స్థిర దశలను సూచించే విలువలు
ఫిక్స్డ్-పాయింట్ విలువలు అనేవి అనుపాతం సంఖ్యల (Q) స్పెక్ట్రం నుండి వచ్చే సంఖ్యా విలువలు, ఇవి కామా మరియు నిమిషాల స్థానం కలిగి ఉంటాయి.
ఫిక్స్డ్-పాయింట్ విలువలలో, - అందుకే పేరు - కామా స్థానం డేటా రకానికి నిర్దిష్టంగా కేటాయించబడుతుంది.
అందువల్ల, ఈ డేటా రకానికి సంఖ్యల నిర్దిష్ట పరిధి ఏర్పడుతుంది; గణితంగా చెప్పాలంటే సంఖ్యా స్థలం అనంతం కాదు.
realityలో ఈ డేటా రకం ప్రధానంగా తగినంత వేగంగా ఫ్లోటింగ్-పాయింట్ హార్డ్వేర్ యూనిట్లు లేని ప్లాట్ఫారమ్లలో ఉపయోగించబడుతుంది, ఎందుకంటే ఫిక్స్డ్-పాయింట్ విలువల యొక్క లెక్కలు యింటెజర్ యూనిట్ల ద్వారా నిర్వహించబడవచ్చు.
ఈ డేటా రకాన్ని డేటాబేస్-మ్యానేజ్మెంట్ సిస్టమ్లలో ఉపయోగిస్తారు, ఎప్పుడు నిర్దిష్ట అవసరాలు నెరవేరాలి.
ఇక్కడ ఆర్థిక డేటా నిల్వ కోసం వ్యవస్థలపై కేంద్రీకృతంగా ఆలోచించండి; చాలా కరెన్సీలు 2 నిమిషాల స్థానాలకు పరిమితమవుతాయి.
(అయితే, ఫిక్స్డ్-పాయింట్ విలువలను ఉపయోగించడం తెలివిగా ఉండదు; కంటే, చిన్న కరెన్సీ యూనిట్ని యింటెజర్గా నేరుగా నిల్వ చేయడం మరియు ప్రదర్శన-స్థాయిని మిగతా భాగాన్ని వదిలించుకోవడం మంచిది)
యింటెజర్ సూచనలకు అనార్ధంగా, ఫిక్స్డ్-పాయింట్ విలువలలో నేను కామా యొక్క ముందు మరియు తరువాత ఉన్న సంఖ్య యొక్క రిజల్యూషన్ను సూచిస్తాను:
ufixed(9,7)
అనేది 9 బిట్లు కామా ముందు విలువకు మరియు 7 బిట్లు కామా తరువాత విలువకు కేటాయించిన డేటా రకం; మొత్తం 16 బిట్ల వెడల్పు ఉంటుంది మరియు, ఉదాహరణకు, రెండు వైవిధ్యమైన యింటెజర్ల వెక్టార్గా, (0,0) నుండి (511,127) వరకు ఒక పరిధిని కవర్ చేయవచ్చు.
ఈ వివరణ, అయితే, దాని దశాంశ ప్రదర్శనలో 28 సంఖ్యలను ఉపయోగించకుండా వదిలిస్తుంది, ఎందుకంటే సాధారణంగా (511,99) వరకు పరిమితం అవుతారు.
ఫిక్స్డ్-పాయింట్ విలువ యొక్క నేరుగా వివరణను 2 వేరే యింటెజర్ల వెక్టర్గా తీసుకోవడం - ఇది దశాంశ సంఖ్యలలో మార్చడానికి ఎల్లప్పుడూ ఉపయోగించని డేటా ప్రాంతాన్ని మరియు మాన్యువల్ కంటే ఉంటుంది - భిన్నం కంటే, దశాంశ పరిధి మొత్తానికి భాగంగా కూడా విశ్లేషించబడవచ్చు.
మొదటి ఉదాహరణైన ufixed(9,7)
కంటే, అప్పుడు 27 వద్ద ఒక నిమ్నాదిత భాగం ఉంచాలి - సంఖ్యా పరిధి 0.00 నుండి 511 + 126⁄127 వరకు ఉంటుంది.
దశాంశ ప్రదర్శనకు మార్చడానికి, కాబట్టి, దశాంశ స్థానాన్ని 128తో విభజించాలి.
ఈ మార్గం ద్వారా లెక్కల ప్రక్రియలను చేయడం సులభం, ఎందుకంటే మిగతా భాగం ఆటోమేటిక్గా ఉంటుంది, అందువల్ల ఈ మార్గం సాధారణంగా ప్రాధాన్యం అవుతుంది.
ఈ మార్గం, అయితే, దశాంశ ప్రదర్శనలో దశాంశ స్థానాలు దాని నిర్ధారిత రిజల్యూషన్ను కోల్పోతాయి, ఒక వ్యక్తి దశాంశ స్థానం ఇప్పుడు 0.01
కాకుండా 0.007874
విలువను కలిగి ఉంటుంది, ఇది సంబంధిత గుండ్రపు తప్పులను కలిగిస్తుంది.
ఎన్ని వివరణా పద్ధతులు ఉపయోగించబడుతాయో, అవి ఉపయోగించే ప్రదేశంలో డాక్యుమెంట్ చేయబడతాయి.
ఫ్లోటింగ్ పాయింట్ లేదా గ్లైటింగ్ పాయింట్ విలువలు
తరంగీయ సంఖ్యలు అనేవి గణితంగా క్లిష్టమైన వ్యక్తీకరణలు, ఇందులో ఒక స్థిరమైన పరిష్కారంతో సమగ్ర సంఖ్యను గణిత పదం ద్వారా వ్యక్తీకరించబడుతుంది, తద్వారా సమాంతర భాగం తరలింపు ద్వారా రూపాంతరం చెందుతుంది - మరియు విజ్ఞానాత్మక నోటేషన్ కు తక్షణంగా అనుగుణంగా ఉంటుంది.
ఇది అమలు చేయడానికి సాధారణంగా ఉపయోగించే పద్ధతి IEEE 754 ద్వారా ప్రమాణీకరించబడింది మరియు అప్పటినుండి అంతర్జాతీయంగా గుర్తించబడింది.
ఈ తరంగీయ సంఖ్య సాధారణంగా క్రింది భాగాల నుండి కూడి ఉంటుంది:
చంచలత (0 లేదా 1 ) |
ఎక్స్పోనెంట్ | మాండలిక |
చంచలత ఒక ద్వినీతి హా/కాదు సమాచారంగా సులభంగా స్థాపించబడినప్పటికీ, అసలు సంఖ్య సమీకరణం ద్వారా ఏర్పడుతుంది
మాండలిక * 2ఎక్స్పోనెంట్
అదనంగా, కొన్ని స్థిరమైన విలువలు ఉన్నాయ్, ఇవి ప్రత్యేక సందర్భాలను నిష్పత్తి సంఖ్యలు కవర్ చేస్తాయి - అందులో ±∞
మరియు NaN
("చాలా చెల్లుబాటు అయ్యే సంఖ్య లేదు").
తరంగీయ సంఖ్యలు ముఖ్యంగా సరి అయినది అంతగా ముఖ్యమైనప్పుడు ఉపయోగకరంగా ఉంటాయి, ఎందుకంటే ఈ రకమైన సంఖ్యలకు అనివార్యంగా రౌండింగ్ పొరపాట్లు మరియు తద్వారా ఖచ్చితత్వ నష్టం జరుగుతుంది. సాధారణంగా, తరంగీయ సంఖ్యలు అనేక సందర్భాలలో కోఆర్డినేట్ల నిర్వచనానికి, 3D నమూనాలలో వర్టెక్స్ వెక్టర్ల లేదా దృష్టి ప్రదర్శన ఉద్దేశ్యానికి Bézier/Spline వక్రాల నిర్వచనంలో ఉపయోగించబడతాయి.
డేటా రూపాల్లో, తరంగీయ సంఖ్యలను float(మాండలిక, ఎక్స్పోనెంట్)
గా పేర్కొనబడతాయి.
IEEE 754 ను అంతరించు రూపం ఉపయోగించినప్పుడు, ఇది తగిన విధంగా సూచించబడుతుంది.