7
votes

Qu'est-ce que l'on entend par la chaîne d'octet? Quelle est la différence entre l'octet et le char?

Quelle est la différence entre la chaîne d'octet et le char? Comment une chaîne d'octet peut-elle être utilisée? Quelqu'un peut-il écrire un petit programme C sur la chaîne d'octet? Comment les chaînes d'octet sont-elles stockées en mémoire?

c

1 commentaires

Désolé, seuls ceux qui ont pris des leçons jouant à l'octet peuvent écrire des programmes sur la chaîne d'octet. ;-) Ils sont stockés en mémoire avec d'autres variables. Je ne m'inquiéterais que des octets lorsque l'un des autres musiciens ne montrent pas. ;-)


5 Réponses :


1
votes
  • Un octet est un autre mot pour un octet de 8 bits.
  • Un caractère est généralement de 8 bits, mais peut être une autre taille sur certaines architectures.

9 commentaires

Le caractère signé (signé en option sur la plupart des compilateurs, un comportement changeable) dans ANSI C n'est pas inférieur à 8bits, pas plus de 8 bille et 8bits exactement. C'est une représentation décimale, après la conversion de 2 compléments, passe de -127 à 128. Le caractère non signé passe de 0 à 255.


@ jpinto3912: il va au moins de -127 à 127 ou de 0 à 255, mais il peut couvrir une plage plus large. En fait, des caractères signés couvrent généralement une plage plus large de -128 à 127.


@JP: Stackoverflow.com/questions/2098149/...


@ninjalj, merci d'avoir souligné que, mon mauvais ... C'était une typo de vitesse, je voulais dire -128 à 127, comme dans ce que vous recevez de 2 compléments sur 8 bits. Mais vous avez soulevé un point très intéressant et valide: "au moins -127", ce que vous obtiendriez sur un ordinateur de 1 compléments.


@Kenny, ANSI C a une valeur par défaut de char = 8bits ... Apparemment, cela peut être changé (je n'ai pas vérifié et je me demande quelles conditions mentales déclencheraient quelqu'un pour changer cela). Donc, la canette (sic) peut-elle être plus de 8 bits. Je mange mon chapeau.


@JP: Tout ce que je sais, c'est ISO C exige char_bit ≥ 8 . Je ne sais pas comment c'est dans ANSI C.


@ JPINTO3912: Les conditions mentales impliquent généralement une rédaction / portage d'un compilateur C pour un DSP de 16 bits ou 32 bits. En outre, l'ISO C prend en charge 2-complément, 1-complément et représentations de la signature pour les entiers.


@ninjalj, je pense que c'est un peu mental d'avoir le compilateur traiter de plus de 8 places, lorsque nous avons de jouer avec. Il est bien compris que la longueur des mots de mémoire DSP / CPU de la mémoire ou de la longueur de l'instruction peut impliquer l'utilisation de 8 bits var / const est moins rapide que l'utilisation de 16 ou 32 bits ... mais le compilateur peut rendre ces changements de rembourrage / alignement à mesure que les optimisations de la vitesse (c'est-à-dire une utilisation entière de 16 / 32bit Mem-Position et Trunc à 8).


Vous pouvez (ou, plus probablement, pourrait une fois sur une fois) avoir 9 bits char sur des machines avec une taille de mot 36 bits. Il y avait aussi d'autres longueurs de mots qui n'étaient pas un multiple de 8 bits.



0
votes

Une chaîne d'octet est simplement une séquence de bits regroupés en morceaux de 8. Ces groupes de taille 8 représentent souvent des caractères. Octet String est un type de données de base utilisé pour SNMP.


0 commentaires

13
votes

Les normes (et telles) utilisent «l'octet» pour indiquer explicitement qu'ils parlent de groupes de 8 bits. Bien que la plupart des ordinateurs actuels fonctionnent avec des octets également de 8 bits, ce n'est pas nécessairement le cas. En fait, "octet" est plutôt mal défini, avec un désaccord considérable sur ce que cela signifie certainement - il est donc généralement évité lorsque la précision est nécessaire.

Néanmoins, sur un ordinateur typique, un octet va être la même chose qu'un octet, et un flux d'octets sera stocké dans une série d'octets.


0 commentaires

1
votes

Un octet est de 8 bits destiné à être manipulés ensemble (d'où le "Oct" dans "octet"). C'est ce que nous pensons quand nous disons "octet" ces jours-ci.

Un caractère est essentiellement un octet - il est défini comme la plus petite unité de mémoire adressable qui, sur presque tous les ordinateurs modernes, est identique à un octet. Mais il y a eu des ordinateurs avec des "mots" à 9 bits, voire 36 bits, qui sont qualifiés de caractères par cette définition. Il vous suffit de vous soucier de ces ordinateurs (et donc de la différence entre un char et un octet) si vous en avez un - laissez les personnes qui ont le matériel étrange s'inquiètent de la façon de faire fonctionner leurs programmes.


1 commentaires

Cela n'arrive pas seulement dans les PDP anciens. Certains DSP de TI ont des caractères 16 ou 32 bits,



-1
votes

Une chaîne utilisée pour être un ensemble d'octets, qui est tour est un ensemble de 8 bits.

Une chaîne en C, est toujours une mémoire, une mémoire contiguë de mémoire, des octets. De retour dans la journée, chaque octet, un octet, représentait un caractère. C'est pourquoi ils ont nommé le type utilisé pour créer des chaînes, Char .

La table ASCII, qui va de 0 à 127, avec la version graphique / accents passant de 0 à 255, n'était plus suffisante pour afficher des caractères dans une chaîne, alors quelqu'un en ajoutant des bits à une représentation de caractères. Dumb-sues de CS cependant de 9 bits, etc. Entrez des chaînes de caractères larges, c'est-à-dire 16bits par caractère. Sur une chaîne de WC, chaque caractère est représenté par 2 octets ... Il faut que votre char = 1 octet règne dans le drain.

Pour conserver une description exacte d'une chaîne, s'il s'agit d'un ensemble de caractères - représenté par-8bits (sur Terre, après la table ASCII, mais je suis allé à Mars), c'est une "chaîne d'octet". < / p>

Si ce n'est pas "String octet", il peut ou non être WC ... Joel était un Nice Post à ce sujet.


1 commentaires

Un octet est un octet 8 bits. Il contraste avec d'autres tailles d'octets qui ont parfois surface, comme les octets de 6 bits, à 9 bits ou 12 bits sur l'ancien matériel comme des PDP.