Kāda ir atšķirība starp rakstzīmju masīviem un veseliem skaitļiem?


Atbilde 1:

Īsā atbilde. Rakstzīmju masīvā ir rakstzīmes. Integer masīvā ir veseli skaitļi. Garāka atbilde: ASCII rakstzīmes vienā vietā aizņem tikai 1 baitu. Vesels skaitlis var būt “vārds” vai 16 biti, “garš vārds” 32 biti un “garš garš vārds” 64 biti. Bet vārda lieluma interpretācija ir atkarīga no kompilatora un kompilatoru slēdžiem. Rakstzīmju aritmētika vienmēr ir “neparakstīta”. Kaut arī vesels skaitlis var būt parakstīts vai neparakstīts atkarībā no deklarācijas. Abu komplimenta aritmētika ir vienāda parakstītajiem un neparakstītajiem. Atšķirīga ir neparakstīto un parakstīto numuru salīdzināšanas interpretācija. (Pilnīgu parakstīto un neparakstīto numuru skaidrojumu C sadaļā skat. “Datorsistēmas: Progrmmer's Perspective” 3. papildinājums, 2. sadaļa).


Atbilde 2:

Būtībā tas ir rakstzīmju sērija, kad otrs ir veselu skaitļu virkne.

Lieta ir tāda, ka ... virkne vai alfarmētika sastāv no rakstzīmju sērijas, vai ne? Tātad rakstzīmju masīvs būtībā ir virkne / alfarmētika.

Bet vesels skaitlis, ir vesels skaitlis. Jā, tas sastāvēja no cipariem, bet datora valodā mēs katru ciparu neatdalām. Mums ir vesels skaitlis kopumā. Tas ir tāpēc, ka binārā loģika pamatā “runā” ar veseliem skaitļiem. Tāpēc nav nepieciešams izgatavot atsevišķu tipu vienam ciparam.

Ņemiet vērā arī to, ka raksturs parasti ir tikai 1 baits (0 0 0 0 0 0 0 0) x1, bet vesels skaitlis parasti ir 2–4 baiti (0 0 0 0 0 0 0 0) x4. Tas ir tāpēc, ka ASCII nodrošina tikai 2 ^ 1 baitu, kas ir 2 ^ 8 rakstzīmes. Kas ir 256 rakstzīmes. Lai gan dažās valodās var izmantot UTF8, kas var sastāvēt no daudz ... LOT vairāk. Bet UTF8 rakstzīme var atšķirties no 1–4 baitiem (vai dažos gadījumos vairāk), un ir jābūt algoritmam, kas atšifrē, kurš no UTF8 tabulas rakstzīmēm tas ir.