Combien de bits ou d'octets y a-t-il dans un caractère? [fermé]

94

Combien de bits ou d'octets y a-t-il par "caractère"?

RedKing
la source
1
Votre question et votre titre demandent des choses différentes. Bref, je ne vous comprends pas, pouvez-vous expliquer davantage?
galymzhan
Oui, je n'étais pas sûr non plus. Mais byte est plus cohérent avec son titre. La quantité de caractères dans un bit n'a pas de sens, mais le nombre de bits dans un caractère a plus de sens. Cela nécessite cependant un contexte, comme mentionné ci-dessus.
Skurmedel
4
@Skurmedel: Comment pensez-vous? Le titre disait aussi "bits".
Cody Gray
@Cody Gray: Regardez ma réponse modifiée. Ses balises indiquent byte, alors j'ai pensé que c'était une faute de frappe. Je me trompe peut-être cependant.
Skurmedel
@Skurmedel: Je ne comprends pas ... Vous n'avez pas posté de réponse à la question. Et oui, je n'avais pas remarqué la balise avant. Mais j'ai toujours tendance à penser que 2/3 est un meilleur match que 1/3.
Cody Gray

Réponses:

195

Cela dépend du caractère et de l'encodage dans lequel il se trouve:

  • Un caractère ASCII en codage ASCII 8 bits est de 8 bits (1 octet), bien qu'il puisse tenir sur 7 bits.

  • Un caractère ISO-8895-1 dans le codage ISO-8859-1 est de 8 bits (1 octet).

  • Un caractère Unicode en codage UTF-8 est compris entre 8 bits (1 octet) et 32 ​​bits (4 octets).

  • Un caractère Unicode en codage UTF-16 est compris entre 16 (2 octets) et 32 ​​bits (4 octets), bien que la plupart des caractères courants prennent 16 bits. Il s'agit de l'encodage utilisé par Windows en interne.

  • Un caractère Unicode en codage UTF-32 est toujours de 32 bits (4 octets).

  • Un caractère ASCII en UTF-8 est de 8 bits (1 octet) et en UTF-16 de 16 bits.

  • Les caractères supplémentaires (non ASCII) dans ISO-8895-1 (0xA0-0xFF) prendraient 16 bits en UTF-8 et UTF-16.

Cela signifierait qu'il y a entre 0,03125 et 0,125 caractères dans un peu.

Rosh Oxymoron
la source
Cette réponse aide beaucoup lorsqu'il s'agit de sockets, d'encodage, de texte, etc.
Mário Meyrelles
17

Il y a 8 bits dans un octet (normalement parlant sous Windows).

Cependant, si vous utilisez des caractères, cela dépendra du jeu de caractères / de l'encodage. Le caractère Unicode peut être de 2 ou 4 octets, donc ce serait 16 ou 32 bits, alors que Windows-1252 parfois incorrectement appelé ANSI n'est que de 1 octet donc 8 bits.

Dans la version asiatique de Windows et d'autres, l'ensemble du système fonctionne en double octet, donc un caractère est de 16 bits.

ÉDITÉ

Selon le commentaire de Matteo, toutes les versions contemporaines de Windows utilisent 16 bits en interne par caractère.

RichardTheKiwi
la source
certaines applications héritées utilisent encore des caractères de 1 octet avec des pages de code locales, mais toutes les versions NT de Windows fonctionnent en interne avec des caractères de 2 octets (UCS-2 jusqu'à NT4, UTF-16 à partir de Windows 2000, stockés sous wchar_t), pas seulement les caractères asiatiques, et donc devrait faire toutes les nouvelles applications. (Sur Linux, au contraire, c'est une histoire complètement différente puisque généralement UTF-8 est utilisé dans tout le système)
Matteo Italia
@Matteo: Notez que sous Windows, le double octet n'est pas forcément la même chose qu'unicode. Référence
Cody Gray
@Cody Gray: oui, généralement lorsque vous lisez un codage "double octet", il s'agit de trucs asiatiques hérités, et ils sont stockés en tant que multiples char, tandis que les chaînes Unicode sont stockées en utilisant le wchar_ttype. À propos, lorsque NT a été lancé, cela wchar_tsuffisait pour éviter les paires de substitution, mais maintenant qu'il s'agit de UTF-16, même les wchar_tchaînes peuvent avoir des caractères de longueur variable, donc sous Windows, un caractère Unicode peut prendre de 2 à 4 octets (1 ou 2 wchar_t).
Matteo Italia
@Matteo: Ouais, je suis d'accord avec vous. Je pense avoir vu quelque chose qui suggérait différemment avant que vous ne modifiiez votre premier commentaire, et c'est là que j'ai écrit le mien. Les chaînes Unicode UTF-16 sont désormais utilisées en interne pour toutes les versions de Windows.
Cody Gray
@Cody Gray: J'ai tendance à modifier un peu trop mes commentaires, cela porte à confusion:)
Matteo Italia