អ្វីគឺអ្វី? · bei.pm
នៅក្នុងផ្នែកនេះមានអត្ថបទអំពីទ្រង់ទ្រាយឯកសារ និងការត្រួតពិនិត្យវិស្វកម្មត្រឡប់។
នៅក្នុងបច្ចុប្បន្នភាពនេះ:
មានភាសាកម្មវិធីច្រើននៅខាងក្រៅ និងមនុស្សជាច្រើនដែលស្គាល់រឿងខ្លះក្រោមឈ្មោះខុសគ្នា ឬពិតជាមិនដឹងអំពីការប្រព្រឹត្តខុសគ្នានៃរឿងមូលដ្ឋានដូចខ្នោះទេ ពីព្រោះភាសាកម្មវិធីរបស់ពួកគេបានអនុញ្ញាតឱ្យវាជួបប្រទៈពីពួកគេ។
tl;dr:
ការបញ្ចូលសញ្ញារបស់ខ្ញុំនៅក្នុងលក្ខខណ្ឌ C99 <stdint.h>
។ អ្នកណាដែលអាចយល់ពីសញ្ញានេះ នឹងអាចប្រើសញ្ញារបស់ខ្ញុំបានយ៉ាងងាយស្រួល។
សម្ព័ន្ធគត់
Integer គឺជាចំនួនគ្រប់គ្រាន់ ដែលមានន័យថាជាចំនួនគ្មានអង្គចេញក្រៅ។
ក្នុងនេះ Integer ត្រូវបានកំណត់នៅក្នុងទ្រង់ទ្រាយទិន្នន័យជារឿយៗក្នុងស៊ុមលេខថេរ បែបផែននៃការរៀបចំ។ ខ្ញុំនឹងផ្តល់ជូនវាក្នុង Bit - ពីព្រោះ "Byte" និងប្រភេទផ្សេងទៀត (Word, Qword, ...) ជារឿយៗត្រូវបានផ្អែកលើវេទិកា។
ក្រៅពីនេះ ក៏មានការបែងចែកនៅក្នុងប្រភេទ Integer គឺ ចំនួនធម្មជាតិ (ℕ, មានន័យគឺគ្មានសញ្ញា - Unsigned) និង ចំនួនគ្រប់គ្រាន់ (ℤ, មានន័យគឺមានសញ្ញា - Signed).
ព័ត៌មាននេះអាចមើលឃើញបានពីសញ្ញានៅក្នុងឈ្មោះ (u
ឬ s
)។
នៅទីនេះ អាចមានចំនួនគ្រប់គ្រាន់ដែលមាន សញ្ញា ត្រូវបានបង្ហាញជាដូចជា Einerkomplement ឬ Zweierkomplement។
សូម្បីតែពុំមានការបង្ហាញផ្សេងទៀត គេនឹងប្រើ Zweierkomplement ពីព្រោះវាជាការបង្ហាញដែលបានគាំទ្រដោយវិជ្ជាជីវៈទំនើប។
ចំនួនគ្មានសញ្ញាណា ត្រូវបានចេញផ្សាយដោយខ្ញុំក្នុងឯកសាររបស់ខ្ញុំជាដូចជា uint
ជាមួយនឹងការបញ្ជាក់ពីភាពត្រឹមត្រូវក្នុង Bits។
ចំនួនដែលមានសញ្ញា ត្រូវបានចេញផ្សាយដោយខ្ញុំក្នុងឯកសាររបស់ខ្ញុំជាដូចជា sint
ផងដែរ ជាមួយនឹងការបញ្ជាក់ពីភាពត្រឹមត្រូវក្នុង Bits។
ខ្ញុំមិនប្រើប្រភេទទិន្នន័យ "char" សម្រាប់តួអក្សរ ពីព្រោះតួអក្សរ អាចត្រូវបានបង្ហាញជាចំនួនគ្រប់គ្រាន់ដែលមានការបកប្រែជាពិសេស។
នេះនឹងត្រូវបានបង្ហាញជាដូចជា uint(8)[]។
ឧទាហរណ៍:
សញ្ញាសម្គាល់ | C99 stdint.h -សមស្រប |
ការពិពណ៌នា | លំហខ្ទង់លេខ |
---|---|---|---|
uint(16) | uint16_t | លេខខុសគ្នាដែលមិនអាចជូនដំណឹង, ប្រវែង 16 បីត | 0 - 65.535 |
sint(8) | int8_t | លេខដែលអាចជូនដំណឹង, ប្រវែង 8 បីត, គ្នាកម្រិតពីរ | -126 - 127 |
uint(24) | uint32_t:24 | លេខខុសគ្នាដែលមិនអាចជូនដំណឹង, ប្រវែង 24 បីត | 0 - 16.777.216 |
តម្លៃទីតាំងទៀបថេរ
លេខទំព័រ គឺជាតម្លៃលេខមួយដែលមានមួយចំណុចពីព្រំដែននៃ លេខរាស្ត្រ (Q) ដែលមាន ចំណុច និង លេខក្រោយចំណុច។
សម្រាប់លេខទំព័រ - ដូច្នេះឈ្មោះផងដែរ - ទីតាំងនៃចំណុចត្រូវបានកំណត់ជារួចដោយប្រភេទទិន្នន័យ។
ដោយសារតែនេះ ទំហំលេខនៃលេខប្រភេទទិន្នន័យនេះក៏ត្រូវបានកំណត់ផងដែរ; តាមគណិតវិទ្យាគឺស្ថាប័នលេខ ចប់។
ក្នុងជីវិតពិតប្រាកដ ប្រភេទទិន្នន័យនេះត្រូវបានប្រើប្រាស់ជាទូទៅនៅលើវេទិកាដែលគ្មានឧបករណ៍ប៉ុនប៉ងដែលលឿនគ្រប់គ្រាន់ ដោយសារតែការគណនាអំពីលេខទំព័រអាចធ្វើបានតាមរយៈឧបករណ៍លេខគន្លង។
ប្រភេទទិន្នន័យនេះក៏ត្រូវបានប្រើជាដើមដោយប្រព័ន្ធគ្រប់គ្រងទិន្នន័យ នៅពេលដែលត្រូវការតម្រូវការដែល តឹងរឹង ត្រូវបានបំពេញ។
គិតពីប្រព័ន្ធសម្រាប់រក្សាទុកព័ត៌មានហិរញ្ញវត្ថុយ៉ាងចាំបាច់; ល currencies ភាគច្រើនមានកំណត់នៅលើ 2 ស្ថានភាពក្រោយចំណុច។
(ប៉ុន្តែគឺមិនល្អដែលប្រើលេខទំព័រសម្រាប់នេះទេ; វាល្អជាងសម្រាប់រក្សាទុក អនុគមន៍ហិរញ្ញវត្ថុតិចតួច ជាអង្គភាពចំនួន និងទុកឱ្យសល់នៅលើកម្រិតនៃការបង្ហាញ)
ដូចជាក្នុងការបញ្ជាក់លេខគន្លង ខ្ញុំបញ្ជាក់ការបង្ហាញនៃលេខ មុន និង ក្រោយ ចំណុច:
ufixed(9,7)
គឺជា ប្រភេទទិន្នន័យដែលរក្សាទុក 9 Bit សម្រាប់តម្លៃមុនចំណុច និង 7 Bit សម្រាប់តម្លៃក្រោយចំណុច; ជាសរុបគឺ 16 Bit និងអាចដcoverកម្រិតពី (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
("គ្មានចំនួនត្រឹមត្រូវ")។
តម្លៃហ្វ្លូតមានប្រយោជន៍ពេល ភាពត្រឹមត្រូវមិនសំខាន់ប៉ុន្មាន ពីព្រោះវាគឺជាប្រភេទតម្លៃដែលត្រូវបង្កើតកំហុសប៉ុន្មាន និងបាត់បង់ភាពត្រឹមត្រូវ។ ជាទូទៅតម្លៃហ្វ្លូតត្រូវបានប្រើប្រាស់ដើម្បីកំណត់កូអរដ្រូនដូចជា វ៉ិចទ័រ Vertex នៅក្នុងម៉ូដែល 3D ឬកូរដូច Bézier/Spline សម្រាប់គោលបំណងតំណាងអុបទិច។
ក្នុងទ្រង់ទ្រាយទិន្នន័យ តម្លៃហ្វ្លូតត្រូវបានបញ្ជាក់ជា float(ម៉ានធីស, ឧបករណ៍)
។
បើទ្រង់ទ្រាយណាមួយដែលមានភាពខុសគ្នាជាមួយ IEEE 754 ត្រូវបានប្រើប្រាស់ នោះវាត្រូវបានកំណត់យ៉ាងត្រឹមត្រូវ។