Padrão ASCII

1. Padrão ASCII

???
gokernel

(usa Linux Mint)

Enviado em 29/07/2013 - 08:54h



Alguém sabe porque o padrão ASCII foi padronizado como deste modo ?

Tem alguma teoria para essa padronização ?

http://codepad.org/JfP1fMO7




  


2. Re: Padrão ASCII

Paulo
paulo1205

(usa Ubuntu)

Enviado em 29/07/2013 - 18:54h

Você postou sua pergunta há várias horas, logo possivelmente já leu na Internet alguma coisa que tire suas dúvidas.

Mesmo assim, até para fins de referência para outros com questão semelhante, o artigo sobre ASCII na Wikipédia em Inglês (http://en.wikipedia.org/wiki/ASCII) é bastante completo e interessante de se ler.


3. Re: Padrão ASCII

Sergio Teixeira - Linux User # 499126
Teixeira

(usa Linux Mint)

Enviado em 29/07/2013 - 19:54h

Não sei se essa informação vai adiantar de alguma coisa, mas inicialmente a tabela ASCII abrangia somente os códigos de controle (00 a 32), os acentos e caracteres especiais primários (33 a 47), os algarismos (48 a 57), outros caracteres na faixa de 58 a 64, e os caracteres maíúsculos, que começavam em ASCII 65 = A e iam até ASCII 90 = Z.

Com o tempo, surgiu a necessidade de estender essa tabela para abranger também os caracteres acentuados e principalmente os minúsculos.

Os minúsculos foi fácil, bastando adicionar 32 (decimal) ao valor ASCII do caracter maiúsculo correspondente.
O preenchimento de outros caracteres, no entanto, foi arbitrário.

Os caracteres ASCII são expressos em hexadecimal.
Assim, o caracter 20 (space) é na verdade o caracter decimal 32.

Tem outros caracteres famosos como:
LF (line feed) = 10
FF (form feed) = 13
NOP (no operation) = 00
BELL (beep ou campainha, aquele sininho que enche o saco) = 07

No Clipper a gente colocava - como pegadinha - o comando @ 0,0 SAY CHR$(7) e o resultado era um sininho infernal - timmmmmmm!... - azucrinando o operador...
Ou então @ 0,0 SAY CHR$(7) + CHR$(7) + CHR$(7).
Já pensou?
Ou para dedurar se a impressora estava ligada ou não, fazia-se um loop mandando printar esse caracter 7...
Quanta maldade, meu Deus!...

O famoso programa GPR (Gerador de Papel de Rascunho) era formado de um loop com o caracter 13 (form feed)...



4. Re: Padrão ASCII

Luis R. C. Silva
luisrcs

(usa Linux Mint)

Enviado em 30/07/2013 - 07:30h

Acabei de tentar isso em C e, mesmo fazendo loop ele só beepa uma vez:


#include <stdio.h>

main(){
int j=7,i;
for(i=0;i<100;i++){
printf("%c", j);
}
}


Claro que o beep não é aquele cabuloso de 15 anos atrás. E é o sistema que o envia.


5. Re: Padrão ASCII

Luis R. C. Silva
luisrcs

(usa Linux Mint)

Enviado em 30/07/2013 - 07:34h

Só uma correção, o 32 é um caractere, o espaço. Então:

0-31, 127 -> controle

Só não sei porquê alguns caracteres especiais ficam entre os numéricos e maiúsculas, entre estas e minúsculas, e no final.


6. Re: Padrão ASCII

Sergio Teixeira - Linux User # 499126
Teixeira

(usa Linux Mint)

Enviado em 30/07/2013 - 09:34h

Rei_astro, na verdade o loop está bipando várias vezes e não apenas uma.
Apenas como o processamento é muito rápido, o resultado se apresenta como se fosse um só bip contínuo.
Para notar o fenômeno, deve ser introduzido um retardo (algum comando que gaste tempo) no meio do loop.

E realmente o intervalo é de 00 a 31, não 32.
(Nessa eu comi mosca)...

Como afirmei antes, a inserção de certos caracteres em determinadas posições da tabela ASCII foi arbitrária.
As impressoras matriciais Epson MX80, LX810, AP2000, etc. vinham acompanhadas de um manual que tem uma excelente tabela ASCII estendida.

Porém, além das implementações no padrão Centronics (seguido pela Epson e outras compatíveis) é possível encontrarmos ainda outros repertórios, onde os caracteres especiais podem ocupar outras posições.


7. Re: Padrão ASCII

Paulo
paulo1205

(usa Ubuntu)

Enviado em 30/07/2013 - 09:49h

O artigo que eu indiquei apresenta um histórico e indica, entre outras coisas, as razões pelas quais os caracteres foram dispostos do jeito como foram. Muitas escolhas arbitrárias, sim -- nem daria para ser diferente, afinal está se falando da definição de um padrão de representação numérica de entidades que não são números --, mas razoavelmente justificadas em muitos casos, considerando-se os recursos da época.

Realmente recomendo que leiam o artigo da Wikipedia.

Não esqueçam que ASCII é tão-somente um conjunto de caracteres de sete bits, com apenas 128 símbolos, dos quais 33 são usados para controle, e nada além disso. Por mais que haja conjuntos de caracteres variados que, usando o ASCII como base, modifiquem alguns dos seus símbolos ou o modo de interpretá-los (como os conjuntos definidos pelo ISO-646, KOI7R ou outras variações cobertas por padrões nacionais não contempladas pela ISO) ou que aumentem a quantidade de símbolos embora mantenham os 128 primeiros símbolos idênticos aos do ASCII (como ISO-8859, DOS/Windows/ANSI codepages, Unicode em suas várias representações, incluindo UTF-8, etc.), tais variações e extensões não são ASCII. Se houver a necessidade de usar uma dessas extensões ou variações, o correto é referir-se a ela pela sua própria designação (por exemplo: ISO-8859-1, CP850, UTF-8, etc.), jamais chamando-a de ASCII, pois seria um erro grosseiro, nem mesmo de "ASCII estendido", pois seria muito ambíguo e vago.


8. Re: Padrão ASCII

Sergio Teixeira - Linux User # 499126
Teixeira

(usa Linux Mint)

Enviado em 30/07/2013 - 15:29h

Realmente.
As tabelas referidas pela Epson são descritas, desde a década de 70, como sendo "ASCII Character Table" e "ASCII Extended Character Table", e são realmente tabelas de caracteres ASCII.
ASCII significa "American Standard Code for Information Interchange".


9. Re: Padrão ASCII

Marcelo Mauro de Oliveira
marcelomauro

(usa Ubuntu)

Enviado em 31/07/2013 - 01:05h

Lembrando também que a tabela ascii foi inicialmente feita com 128 caracteres por causa do tamanho de uma palavra nos computadores antigos que tinham 8 bits. Assim as combinações possíveis de 0000 0000 a 1111 1111 são exatamente de 0 a 127. A escolha das letras obviamente privilegiou o alfabeto latino na versão inglesa, isto é, não havia interesses para caracteres tais como á, è, ã, etc... já que não existiam na sua lingua. A solução então foi eleger uma certa quantidade de símbolos usáveis para preencher os espaços restantes. Uma vez que vc aloca 1 byte para um caractere '0', você terá que alocar um byte para qualquer outra letra da tabela. Na verdade o byte define apenas a quantidade de combinações possíveis. Não é vantajoso, em termos de máquina usar apenas ..11 1111, ou ...1 1111 (até é possível, mas como todo o resto da máquina é feita de multiplos de 8bits, isto é 1 byte, 2 bytes, 4 bytes, etc...)

Uma palavra nos computadores antigos tinha apenas 1 byte. Nos atuais (64bits), temos 8 bytes. Logo na evolução dos computadores de 16bits, criou-se a tabela ascii extendida. Com um bit a mais as 128 combinações viraram 256... mas daí caiu no problema que eu disse antes: vc tinha .... ...1 1111 1111; Logo criou-se outros padrões como o utf-8 que otimiza mais a capacidade de processamento das maquinas mais modernas.


10. Re: Padrão ASCII

Bruno Rogério Fernandes
brunorf

(usa Arch Linux)

Enviado em 31/07/2013 - 08:37h

marcelomauro, apenas uma correção
Com 8 bits tem-se 256 combinações diferentes, não 128, ou seja, o intervalo possível é de 0 a 255.


11. Re: Padrão ASCII

Marcelo Mauro de Oliveira
marcelomauro

(usa Ubuntu)

Enviado em 31/07/2013 - 11:54h

brunorf escreveu:

marcelomauro, apenas uma correção
Com 8 bits tem-se 256 combinações diferentes, não 128, ou seja, o intervalo possível é de 0 a 255.


Verdade!!! Erro de cálculo. Com 8bits temos -128 a 127 ou 0 a 256. Dito isto façam as devidas correções no meu post anterior!

Obrigado brunorf!


12. Re: Padrão ASCII

Sergio Teixeira - Linux User # 499126
Teixeira

(usa Linux Mint)

Enviado em 31/07/2013 - 12:25h

Outra correção:
O byte continua tendo apenas 8 bits!

Acontece que pelas modernas arquiteturas A CPU LÊ EM BLOCOS de 2 BYTES (16 bits), 4 bytes (32 bits), 8 bytes (64 bits) e assim por diante.

Cada byte tem "à esquerda" um registrador chamado SO (shift out) que é quem permite essa "mágica" iniciada com o advento do padrão IBM-PC.

Portanto dizer que um processador é "de 16 bits", "de 32 bits" ou "de 64 bits" é uma impropriedade.

Tais processadores são capazes de "ler simultaneamente" sequências de blocos de 16, 32 ou de 64 bits (2, 4 ou 8 bytes de cada vez), em vez de lê-los um a um.



01 02



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts