Kā zināms, runājot par sniegumu CPU vai GPU, jūs droši vien esat dzirdējuši par veseli skaitļi un peldošā komata skaitļiVai varbūt esat to redzējis arī programmēšanā, atkarībā no datu tipiem, ko pieņem konkrētā valoda. Jebkurā gadījumā daudzi cilvēki joprojām nezina, kas ir šie skaitļi, to atšķirības, lietojumu utt. Tāpēc šajā pamācībā mēs visu izskaidrosim...
Jums varētu būt interesanti arī uzzināt:
- Kas ir FLOPS?
Terminoloģija

Pirms sākam iepazīties ar teoriju par veseliem skaitļiem un peldošo komatu, jāpatur prātā dažas lietas: jēdzieni vai vārdu krājums ko redzēsiet visā šajā rakstā. Termini, kas jums jāzina, ir šādi:
- Datu veidi: attiecas uz datu attēlojuma veidu atbilstoši formātam, piemēram, vesels skaitlis, peldošais komats, virkne utt. Turklāt tie var būt ar zīmi, bez zīmes utt. Un tos var attēlot binārā, decimālā, heksadecimālā, oktālā utt. formātā.
- GarumsDatu garums attiecas uz bitu skaitu, kas nepieciešams to attēlošanai. Piemēram, datu tips var būt 8 bitu, kas nozīmē, ka to var attēlot no 00000000 līdz 11111111, kas ir decimālais ekvivalents skaitļu no 0 līdz 255 (256 iespējamās vērtības) attēlošanai.
- EksponentsŠis ir veids, kā izteikt izteiksmes reizināšanu ar sevi noteiktu reižu skaitu.
- BudžetaSkaitlī ar eksponentu eksponents tiek piemērots pašam skaitlim.
- Mantisa: ir peldošā komata skaitļa daļa pirms decimālzīmes.
- precizitāte: norāda, cik precīza ir vērtība.
Veseli skaitļi
L numeros enteros Tie ir skaitļi, kas papildus nullei ietver gan pozitīvus, gan negatīvus skaitļus. Vārds "integer" ir latīņu izcelsmes un norāda, ka tie nav skaitļi ar daļskaitļiem vai decimāldaļām.
Veselu skaitļu definīcija
Vesels skaitlis ir skaitlis bez decimāldaļas vai daļskaitļa un ietver negatīvus un pozitīvus skaitļus, kā arī nulli, kas kalpo par sākumpunktu pārējiem diviem. Turklāt matemātikā šie skaitļi bieži tiek attēloti ar Z:
Z= {… -7, -6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 5, 6, 7 …}
- Pozitīvi skaitļi: Skaitlis ir pozitīvs, ja tas ir lielāks par nulli. Piemēram, 1, 2, 3 utt. Šie skaitļi parasti tiek attēloti bez jebkāda simbola vai ar pluszīmi (+) priekšā.
- Negatīvie skaitļi: Skaitlis ir negatīvs, ja tas ir mazāks par nulli. Piemērs: -1, -2, -3... Kā redzat, tiem vienmēr priekšā jābūt zīmei – (binārajā kodā var izmantot zīmes bitu).
- NulleTas nav definēts kā negatīvs vai pozitīvs skaitlis. Tas ir vienkārši vesels skaitlis, bet neitrāls. Turklāt, kā zināms, šis skaitlis radies arābu pasaulē un no mūsdienu Andalūzijas tika pārnests uz pārējo Eiropu. Tas ir bināro sistēmu pamatā, uz kurām balstās mūsdienu skaitļošana.
Darbības ar veseliem skaitļiem
Runājot par veseliem skaitļiem, ir vairāki aritmētiskās matemātiskās darbības kas ir fundamentāli, piemēram:
- SumaVeselu skaitļu saskaitīšana ir rezultāts, kas ir divu vai vairāku šo vērtību summa. Tas var palielināties vai samazināties, jo, ja saskaitāt negatīvus skaitļus, tie, kā zināms, darbosies kā atņemšana.
- Ja abiem veseliem skaitļiem ir viena un tā pati zīme, to absolūtās vērtības tiek summētas. Piemēram: 1 + 2 = 3, -3 + (-2) = -5.
- Ja veseliem skaitļiem ir dažādas zīmes, tad tas jāveic kā atņemšana, kā jau minēju, tas ir, tā būs vērtību atņemšana. Piemēram: 12 + (-1) = 11
- AtņemšanaVeselu skaitļu atņemšana ir divu vai vairāku skaitļu starpības atrašanas process, un šajā gadījumā tas var izraisīt arī pieaugumu vai samazinājumu atkarībā no zīmes. Atņemšanai ir arī savi noteikumi, tāpat kā saskaitīšanai. Piemēram, ja vēlamies atņemt (+4) – (+3) = 1, 4 – 7 = -3.
- ReizināšanaArī reizināšanai ar veseliem skaitļiem tiek izmantoti dažādi noteikumi atkarībā no zīmes. Lai uzzinātu, kādi ir šie noteikumi, varat apskatīt reizināšanas tabulu zemāk. Lai sniegtu reizināšanas piemēru: 3 x 11 = 33, -2 x 1 = -2.
- DivisiónLīdzīga procedūra tiek piemērota arī veselu skaitļu dalīšanai, un es nedomāju, ka tas ir jāpaskaidro. Esmu atstājis arī tabulu zemāk.
| Produkts vai reizināšana | Rezultāts | piemērs |
|---|---|---|
| (+) × (+) | + | 2 × 3 = 6 |
| (+) × (-) | - | 2 × (-3) = -6 |
| (-) × (+) | - | (-2) × 3 = -6 |
| (-) × (-) | + | (-2) × (-3) = 6 |
| División | Rezultāts | piemērs |
|---|---|---|
| (+) ÷ (+) | + | 12 3 ÷ 4 = XNUMX |
| (+) ÷ (-) | - | 12 ÷ (-3) = -4 |
| (-) ÷ (+) | - | (-12) ÷ 3 = -4 |
| (-) ÷ (-) | + | (-12) ÷ (-3) = 4 |
Strādājot ar binārā formātā attēlotiem veseliem skaitļiem, centrālais procesors (CPU) izpildvienībās veiks šādas vienkāršas aritmētiskās darbības, piemēram: ALU (Aritmētiskās loģikas vienība) vai īpašas saskaitīšanas, reizināšanas utt. vienības. Turklāt, kā jums vajadzētu zināt, ar šīm elementārajām darbībām var ieviest arī citas darbības…
Digitālajā sistēmā
Tomēr līdz šim brīdim mēs pieņēmām, ka tie ir decimālskaitļi. Bet, kā zināms, datorā tie tiek izmantoti digitālās vērtības, tāpēc saskaitīšana, atņemšana, reizināšana un dalīšana atšķiras:
- SumaŠī binārā darbība ietver šādas bitu darbības:
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 1 | 0 + 1 |
Piemēram, saskaitot 110 + 100 = 1010. Tas ir, sākot no labās uz kreiso pusi, 0+0=0, 1+0=1 un 1+1=2 (bet, tā kā binārajā sistēmā nav 2, bet gan 10, tas būtu 0, un jūs ņemtu 1).
- AtņemšanaBinārā atņemšana šajā gadījumā ir arī nedaudz raksturīga, kā redzams šajā tabulā:
| 0 | 0 | 0 |
| 1 | 0 | 1 (0–1 nav atļauts, ja testa rezultāts ir negatīvs) |
| 1 | 1 | 0 |
Piemēram, 0-0=0, 1-0=0, 1-1=0, 101-010=11. Turklāt jāzina, ka bināro skaitli var atņemt arī, izmantojot divnieka papildinājumu. Rezultātu iegūs, pievienojot atņemamā divnieka papildinājumu.
Runājot par decimālskaitli ar lielumu un zīmi, mēs domājam, ka attēlojam negatīvus skaitļus. Lai to izdarītu, pozitīvai zīmei priekšā var izmantot 0 un negatīvai zīmei 1. Piemēram, ja mums ir vērtība 11 (3) un mēs vēlamies to attēlot ar zīmi, pozitīvajam skaitlim varētu izmantot 011 (+3) un negatīvajam skaitlim 111 (-3), bet norādiet to, jo pretējā gadījumā to varētu sajaukt ar bināro skaitli 111, kas ir līdzvērtīgs +7.
- ReizināšanaKas attiecas uz bināro reizināšanu, tas ir diezgan vienkārši, jo jums nebūs jāņem vērā dažādas reizināšanas tabulas, tikai rezultāti ar 0 un 1:
| 0 | 0 | 0 |
| 0 | 1 | 0 (tas pats attiecas uz 1×0) |
| 1 | 1 | 1 |
Tāpēc vienīgais, kas rezultētos 1, būtu reizināšana ar 1x1. Visas pārējās konfigurācijas rezultējas 0. Piemēram, 12x2 binārajā formātā būtu 1100x10:
1100 x 10 = 11000
Ja mēs pārvēršam skaitli 11000 decimālskaitlī, mēs redzam, ka tas patiesībā ir 24…
- DivisiónRunājot par dalīšanu, tā arī ir vienkārša un to var saprast kā bināro reizināšanu un bināro atņemšanu. Tas ir, tā ir tā pati decimālā dalīšana, bet, veicot atņemšanu, ko veicat decimālajā dalīšanā, jums tas jādara tāpat kā atņemšanas sadaļā. Arī reizināšana tiek veikta tāpat kā reizināšanas sadaļā.
Papildinformāciju par binārās loģikas operācijas, šeit ir vēl viens raksts.
Peldošais komats

Lai gan veseli skaitļi ir precīzi, skaitļos peldošais komats (peldošā komata vai fiksētā komata) gadījumā tas tā nav. Šie skaitļi attēlo daļskaitļus vai decimālskaitļus, tāpēc tie ir sarežģītāki. Turklāt to attēlošanai ir nepieciešams kaut kas sarežģītāks nekā vienkāršie veselu skaitļu biti, kā redzēsim.
Piemēram veikalā Atmiņā skaitli 2 (10) ir tikpat vienkārši saglabāt kā 10 bitus. Taču peldošā komata skaitļus nevar saglabāt tādā pašā veidā, jo rodas problēma: kāds ir pirmais skaitlis vai vērtība, ko saglabājat? Iedomājieties 0.01. Šajā gadījumā jums ir jādefinē, kā tieši tas ir jāsaglabā.
Un tāpēc peldošā komata skaitļi tiek sadalīti trīs būtiskas sastāvdaļas:
- Parakstīt: ir pozitīva vai negatīva zīme, ko attēlo bits. Piemēram, 0 ir pozitīvs, bet 1 — negatīvs.
- Eksponents: ir skaitlis, kas reizinās un ko var attēlot, piemēram, ar 8 bitiem.
- Matīsa: ir paša skaitļa vērtība, un to var attēlot ar 23 bitiem. Tas nozīmē, ka kopējais garums ir 32 biti, lai gan tiem var būt atšķirīgs garums, kā redzēsim vēlāk.
Piemēram, binārais peldošā komata skaitlis būtu:
10000000000000101010011110001000
Šajā gadījumā mums ir zīmes bits, kas ir 1, kam seko baits, kas apzīmē eksponentu 00000000, un visbeidzot skaitītājs, kas ir 00000101010011110001000.
precizitāte
Tev arī jāzina, kas tas ir precizitāte peldošā komata vērtību, jo par to jūs daudz dzirdēsiet, runājot par centrālajiem procesoriem un grafiskajiem procesoriem, kā arī šāda veida datu veiktspējas testēšanu.
- Viena precizitāteŠādi sauc peldošā komata skaitļus, kuru kopējais garums ir 32 biti. Šajā gadījumā skaitļa attēlošanai tiek izmantoti 4 baiti jeb 32 biti, kā rezultātā iegūtais skaitlis nav 32 bitu, kā tas būtu veselu skaitļu gadījumā. Tā vietā būtu jāatņem 1 bits zīmei un vēl 8 biti eksponentam, atstājot 23 skaitītājam, kā redzējām iepriekš.
- Divkārša precizitāteTie ir 64 bitu skaitļi, kas nozīmē, ka tie var attēlot lielāku vērtību skaitu nekā skaitļi ar vienu precizitāti. Piemēram, mums ir šis gadījums, kurā mums ir 1 bits zīmei, 11 biti eksponentam un 52 biti skaitītājam:

Lai gan mēs parasti runājam tikai par vienas un divu precizitātes peldošā komata formātiem, pastāv arī citi formāti, piemēram, 16 bitu, 128 bitu utt. Lai gan šie ir visizplatītākie.
Pārplūde
El pārplūde Peldošā komata pārpilde rodas, mēģinot saglabāt skaitli, kas ir lielāks nekā izvēlētais modelis spēj pienācīgi saglabāt. Kā zināms, tas radīs kļūdas, jo ne visus bitus var saglabāt, un jebkuras aritmētiskās vai loģiskās darbības rezultāts atšķirsies no faktiskā rezultāta, ko meklējat. Tas radīs programmatūras kļūdu…
IEEE standarts 754
El IEEE peldošā komata aritmētikas standarts (IEEE 754) Tas ir peldošā komata aprēķinu tehniskais standarts, ko 1985. gadā izveidoja Elektrotehnikas un elektronikas inženieru institūts (IEEE).
Standarts risināja daudzas problēmas, kas tika konstatētas dažādās peldošā komata implementācijās un kas apgrūtināja tā uzticama lietošanaTāpēc, lai gan var būt arī citi, eksotiskāki attēlojumi, jāsaka, ka IEEE 754 standarts mūsdienās ir visizplatītākais reālo skaitļu attēlojums datoros neatkarīgi no izmantotās centrālā procesora arhitektūras un operētājsistēmas.
Kā jau minējām iepriekš, IEEE 754 standarts sastāv no trīs būtiskas daļas, bet šīm daļām ir noteikts garums:
- Matisas zīme: norāda, vai skaitlis ir pozitīvs vai negatīvs. 0. bits tiek izmantots pozitīviem skaitļiem, bet 1. bits — negatīviem skaitļiem.
- Neobjektīvs eksponentsŠajā gadījumā tas ir jāattēlo gan pozitīvā, gan negatīvā izteiksmē. Lai iegūtu saglabāto eksponentu, faktiskajam eksponentam tiek pievienota nobīde.
- Normalizēts Matiss: šajā gadījumā tas ir skaitļa pamatskaitlis zinātniskajā pierakstā.
Piemēram, šeit mums ir IEEE 754 numuri, kas ir sadalīti divās daļās atbilstoši iepriekšminētajām trim komponentēm: vienkārša precizitāte un dubulta precizitāte.
| VEIDI | PARAKSTI | OBLIGĀTS EKSPONENTS | NORMALIZĒTA MANTISA | INCLINACIÓN |
|---|---|---|---|---|
| Viena precizitāte | 1 (31. bits) | 8 (30-23) | 23 (22-0) | 127 |
| Divkārša precizitāte | 1 (63. bits) | 11 (62-52) | 52 (51-0) | 1023 |
Piemērs -
Piemērs: 85.125 85 = 1010101 0,125 = 001 85,125 = 1010101,001 =1.010101001x2^6 zīme = 0
Īpašas vērtības
IEEE ir rezervējusi dažas vērtības, kas var radīt neskaidrības un kuras jums ir ļoti svarīgi zināt:
- Nulle: Tā ir īpaša vērtība, kas norādīta ar eksponentu un lielumu 0. No otras puses, -0 un +0 ir dažādas vērtības, lai gan abas ir vienādas.
- Denormalizēts: Ja eksponents ir visas nulles, bet mantisa nav, tad vērtība ir denormalizēts skaitlis. Tas nozīmē, ka šim skaitlim pirms binārā komata nav pieņemta sākuma skaitļa.
- Bezgalīgs: Vērtības +bezgalība un -bezgalība tiek attēlotas ar eksponentu, kurā visi biti ir vienādi ar 1, un mantisu, kas sastāv no visām nullēm. Zīmes bits atšķir negatīvu bezgalību no pozitīvas bezgalības. Darbības ar bezgalīgām vērtībām ir labi definētas IEEE standartā.
- Nav skaitlis (NAN): NAN vērtība tiek izmantota, lai attēlotu kļūdas vērtību. Tas tiek attēlots, ja eksponentu lauks sastāv no vieniem ar nulles zīmes bitu vai mantisas, kas nav 1, un kam seko nulles. Šī ir īpaša vērtība, ko programmēšanā varētu izmantot, lai apzīmētu mainīgo, kuram vēl nav vērtības.
| EKSPONENTS | mantisa | VALUE |
|---|---|---|
| 0 | 0 | tieši 0 |
| 255 | 0 | Daudz |
| 0 | nē 0 | denormalizēts |
| 255 | nē 0 | Nav skaitlis (NAN) |
Līdzīgi ir ar dubulto precizitāti, bet iepriekš redzamajā tabulā 255 vietā tā būtu jāaizstāj ar vērtību 2049.
| Denormalizēts | Normalizēts | Aptuvenā decimāldaļa | |
|---|---|---|---|
| Viena precizitāte | ± 2 -149 a (1–2 -23 ) × 2 -126 | ± 2 -126 a (2–2 -23 ) × 2 127 | ± aptuveni 10 -44,85 aptuveni 10 38,53 |
| Divkārša precizitāte | ± 2 -1074 a (1–2 -52 ) × 2 -1022 | ± 2 -1022 a (2–2 -52 ) × 2 1023 | ± aptuveni 10 -323,3 aptuveni 10 308,3 |
Pozitīvo peldošā komata skaitļu diapazonu var iedalīt normalizēti skaitļi un denormalizēti skaitļi kas izmanto tikai daļskaitļa precizitāti. Tā kā katram peldošā komata skaitlim ir atbilstoša negatīva vērtība, iepriekš minētie diapazoni ir simetriski ap nulli.
Pastāv pieci atšķirīgi skaitļu diapazoni, kurus vienprecizitātes peldošā komata skaitļi nevar attēlot, izmantojot līdz šim parādīto shēmu:
- Negatīvi skaitļi, kas ir mazāki par – (2 – 2 -23 ) × 2 127 (negatīva pārpilde)
- Negatīvi skaitļi, kas lielāki par –2 -149 (negatīva pārpilde)
- Nulle
- Pozitīvi skaitļi, kas mazāki par 2 -149 (pozitīva nepietiekama plūsma)
- Pozitīvi skaitļi, kas lielāki par (2 – 2 -23 ) × 2 127 (pozitīva pārplūde)
El pārplūde Tas parasti nozīmē, ka vērtības ir kļuvušas pārāk lielas, lai tās varētu attēlot, kā es jau ziņoju veselu skaitļu gadījumā. Nepilnīga plūsma ir mazāk nopietna problēma, jo tā apzīmē tikai precizitātes zudumu, kas garantēti ir ļoti tuvu nullei.
IEEE galīgo peldošā komata skaitļu kopējā efektīvā diapazona tabula ir parādīta zemāk:
| Binario | Decimāldaļskaitlis | |
|---|---|---|
| Vienvietīgs | ± (2 – 2 -23 ) × 2 127 | aptuveni ± 10 38,53 |
| Dubultā | ± (2 – 2 -52) × 2 × 1023 | aptuveni ± 10 308,25 |
Īpašas operācijas
| Darbība | Rezultāts |
|---|---|
| n ÷ ±Bezgalība | 0 |
| ±Bezgalība × ±Bezgalība | ±Bezgalīgs |
| ±ne nulle ÷ ±0 | ±Bezgalīgs |
| ±galīgs × ±Bezgalīgs | ±Bezgalīgs |
| Bezgalība + Bezgalība Bezgalība – -Bezgalība | +Bezgalīgs |
| -Bezgalība – Bezgalība -Bezgalība + – Bezgalība | -Bezgalīgs |
| ±0 ÷ ±0 | NaN |
| ±Bezgalība ÷ ±Bezgalība | NaN |
| ±Bezgalība × 0 | Nan |
| NaN == NaN | Nepatiess |
Kā redzat, peldošā komata skaitļi ir vēl sarežģītāki nekā veseli skaitļi, taču tie ir ļoti nepieciešami mūsdienu skaitļošanai.
Vesels skaitlis pret peldošā komata ātrumu

Jūs droši vien domājat, vai labāks ir procesors ar augstāku veselu skaitļu veiktspēju vai tāds, kam ir augstāka veiktspēja. augstāka veiktspēja Peldošais komats. Agrāk tā bija bieži sastopama parādība; tagad tā pieder pagātnei, taču tas joprojām ir interesants jautājums. No tā būs atkarīga programmatūras veiktspēja.
Vispārīgi sakot, daudzas no tradicionālajām lietojumprogrammām intensīvāk izmanto veselu skaitļu operācijas. Tomēr, runājot par zinātnisku programmatūru vai videospēlēm, multividi utt., peldošā komata metode kļūst svarīgāka. Tāpēc, Tas nedaudz būs atkarīgs no izmantotās programmatūras. biežāk.
Pašlaik mums ir šī vienība PLAUKI lai aprakstītu ierīces veiktspēju ar peldošā komata aprēķiniem sekundē, ko tā var veikt. Tomēr šī mērvienība ir efektīvāka superdatoriem vai augstas veiktspējas skaitļošanai (HPC), nevis mājas skaitļošanai.
Turklāt jums jāzina, ka to var konvertēt starp abiem, ja vēlaties, lai gan šī ir cita tēma, kuru es šeit neaplūkošu.
Jums tas arī jāpatur prātā instrukcijas Instrukcijas, kas strādā ar veseliem skaitļiem, parasti apstrādā mazāk laika, savukārt peldošā komata instrukcijas var aizņemt vairāk ciklu. Šī iemesla dēļ nav tik vienkārši salīdzināt instrukciju skaitu ciklā veseliem skaitļiem un peldošā komata instrukcijām.