Pular para o conteúdo principal

Verba Volant

Tabela ASCII

Sumário

1. Breve Histórico da Tabela ASCII

O American Standard Code for Information Interchange, ou ASCII, foi criado em 1963 por um comitê chamado American Standards Association (ASA) até 1969, quando passou a ser chamado pelo nome American National Standards Institute (ANSI),como é conhecido até hoje.

A codificação ASCII surge da reordenação e ampliação do conjunto de símbolos e caracteres já utilizados na telegrafia da época pela empresa Bell.

No início incluía apenas letras maiúsculas e números, mas em 1967 foram acrescentadas letras minúsculas e alguns caracteres de controle, formando o que é conhecido como US-ASCII, constituído por um conjunto de caracteres de 0 a 127. Assim, este conjunto de 128 caracteres codificados em 7 bits foi publicado em 1967 como uma codificação padrão, contendo todos os caracteres necessários para se escrever em língua inglesa.

Em 1981, a IBM desenvolveu uma extensão do padrão ASCII, nesta versão foram substituídos alguns caracteres de controle obsoletos por caracteres gráficos e também foram adicionados 128 caracteres, como novos símbolos, sinais, gráficos, letras latinas, todos os sinais de pontuação e caracteres necessários para escrever textos em outros idiomas, como o espanhol. Assim este conjunto ASCII estendido passou a ter no total 256 caracteres codificados em 8 bits, passando a ser conhecido como Code page 437 ou cp437.

A IBM incluiu suporte para esta página de código (Code page 437) no hardware de seu modelo 5150, conhecido como “IBM-PC”, considerado o primeiro computador pessoal. O sistema operacional deste modelo, o "MS-DOS", utilizava esse código ASCII estendido.

Atualmente quase todos os sistemas de computador usam o código ASCII para representar caracteres e textos[1].

2. Tabela ASCII

Caractere Significado Caret Notation Uso Dec Hex Bin (8 bits)

NUL

Null

^@

'\0' Fim de String (C String)

0

0

00000000

SOH

Start of Heading

^A

Início de cabeçalho

1

1

00000001

STX

Start of Text

^B

Início de Texto

2

2

00000010

ETX

End of Text

^C

Fim de Texto

3

3

00000011

EOT

End of Transmission

^D

Fim de Transmissão

4

4

00000100

ENQ

Enquiry

^E

Inquirição

5

5

00000101

ACK

Acknowledge

^F

Confirmação Positiva

6

6

00000110

BEL

Bell

^G

'\a' Sinal

7

7

00000111

BS

Backspace

^H

'\b' Retorno

8

8

00001000

HT

Horizontal Tab

^I

'\t' Tabulação Horizontal

9

9

00001001

LF

Line Feed

^J

'\n' Avanço de Linha

10

0A

00001010

VT

Vertical Tab

^K

'\v' Tabulação Vertical

11

0B

00001011

FF

Form Feed

^L

'\f' Alimentação de Formulário

12

0C

00001100

CR

Carriage Return

^M

'\r' Retorno de Carro

13

0D

00001101

SO

Shift Out

^N

Mudar para fora

14

0E

00001110

SI

Shift In

^O

Mudar para dentro

15

0F

00001111

DLE

Data Link Escape

^P

Escape de Link de Dados

16

10

00010000

DC1

Device Control 1

^Q

Controle de Dispositivo 1

17

11

00010001

DC2

Device Control 2

^R

Controle de Dispositivo 2

18

12

00010010

DC3

Device Control 3

^S

Controle de Dispositivo 3

19

13

00010011

DC4

Device Control 4

^T

Controle de Dispositivo 4

20

14

00010100

NAK

Negative Acknowledge

^U

Confirmação Negativa

21

15

00010101

SYN

Synchronous Idle

^V

Inatividade Síncrona

22

16

00010110

ETB

End of Transmission Block

^W

Fim de Bloco de Transmissão

23

17

00010111

CAN

Cancel

^X

Cancelar

24

18

00011000

EM

End of Medium

^Y

Fim de Meio

25

19

00011001

SUB

Substitute

^Z

Substituir

26

1A

00011010

ESC

Escape

^[

Escape

27

1B

00011011

FS

File Separator

^\

Separador de Arquivo

28

1C

00011100

GS

Group Separator

^]

Separador de Grupo

29

1D

00011101

RS

Record Separator

^^

Separador de Registro

30

1E

00011110

US

Unit Separator

^_

Separador de Unidade

31

1F

00011111

Space

N/A

Espaço

32

20

00100000

!

Exclamation mark

N/A

Ponto de Exclamação

33

21

00100001

''

Double quote

N/A

Aspas Duplas

34

22

00100010

#

Number sign

N/A

Símbolo de Número

35

23

00100011

$

Dollar sign

N/A

Símbolo de Dólar

36

24

00100100

%

Percent

N/A

Percentual

37

25

00100101

&

Ampersand

N/A

E Comercial

38

26

00100110

'

Single quote

N/A

Aspas Simples

39

27

00100111

(

Left Parenthesis

N/A

Parêntese Esquerdo

40

28

00101000

)

Right Parenthesis

N/A

Parêntese Direito

41

29

00101001

*

Asterisk

N/A

Asterisco

42

2A

00101010

+

Plus sign

N/A

Sinal de Adição

43

2B

00101011

,

Comma

N/A

Vírgula

44

2C

00101100

-

Hyphen

N/A

Hífen

45

2D

00101101

.

Period

N/A

Ponto

46

2E

00101110

/

Slash

N/A

Barra

47

2F

00101111

0

Zero

N/A

Zero

48

30

00110000

1

One

N/A

Um

49

31

00110001

2

Two

N/A

Dois

50

32

00110010

3

Three

N/A

Três

51

33

00110011

4

Four

N/A

Quatro

52

34

00110100

5

Five

N/A

Cinco

53

35

00110101

6

Six

N/A

Seis

54

36

00110110

7

Seven

N/A

Sete

55

37

00110111

8

Eight

N/A

Oito

56

38

00111000

9

Nine

N/A

Nove

57

39

00111001

:

Colon

N/A

Dois Pontos

58

3A

00111010

;

Semicolon

N/A

Ponto e Vírgula

59

3B

00111011

<

Less than

N/A

Menor que

60

3C

00111100

=

Equal sign

N/A

Sinal de Igualdade

61

3D

00111101

>

Greater than

N/A

Maior que

62

3E

00111110

?

Question mark

N/A

Ponto de Interrogação

63

3F

00111111

@

At sign

N/A

Símbolo de Arroba

64

40

01000000

A

Uppercase A

N/A

A Maiúsculo

65

41

01000001

B

Uppercase B

N/A

B Maiúsculo

66

42

01000010

C

Uppercase C

N/A

C Maiúsculo

67

43

01000011

D

Uppercase D

N/A

D Maiúsculo

68

44

01000100

E

Uppercase E

N/A

E Maiúsculo

69

45

01000101

F

Uppercase F

N/A

F Maiúsculo

70

46

01000110

G

Uppercase G

N/A

G Maiúsculo

71

47

01000111

H

Uppercase H

N/A

H Maiúsculo

72

48

01001000

I

Uppercase I

N/A

I Maiúsculo

73

49

01001001

J

Uppercase J

N/A

J Maiúsculo

74

4A

01001010

K

Uppercase K

N/A

K Maiúsculo

75

4B

01001011

L

Uppercase L

N/A

L Maiúsculo

76

4C

01001100

M

Uppercase M

N/A

M Maiúsculo

77

4D

01001101

N

Uppercase N

N/A

N Maiúsculo

78

4E

01001110

O

Uppercase O

N/A

O Maiúsculo

79

4F

01001111

P

Uppercase P

N/A

P Maiúsculo

80

50

01010000

Q

Uppercase Q

N/A

Q Maiúsculo

81

51

01010001

R

Uppercase R

N/A

R Maiúsculo

82

52

01010010

S

Uppercase S

N/A

S Maiúsculo

83

53

01010011

T

Uppercase T

N/A

T Maiúsculo

84

54

01010100

U

Uppercase U

N/A

U Maiúsculo

85

55

01010101

V

Uppercase V

N/A

V Maiúsculo

86

56

01010110

W

Uppercase W

N/A

W Maiúsculo

87

57

01010111

X

Uppercase X

N/A

X Maiúsculo

88

58

01011000

Y

Uppercase Y

N/A

Y Maiúsculo

89

59

01011001

Z

Uppercase Z

N/A

Z Maiúsculo

90

5A

01011010

[

Left square bracket

N/A

Colchete Esquerdo

91

5B

01011011

\

Backslash

N/A

Barra Invertida

92

5C

01011100

]

Right square bracket

N/A

Colchete Direito

93

5D

01011101

^

Caret

N/A

Acento Circunflexo

94

5E

01011110

_

Underscore

N/A

Subtraço

95

5F

01011111

`

Grave accent

N/A

Acento Grave

96

60

01100000

a

Lowercase a

N/A

A Minúsculo

97

61

01100001

b

Lowercase b

N/A

B Minúsculo

98

62

01100010

c

Lowercase c

N/A

C Minúsculo

99

63

01100011

d

Lowercase d

N/A

D Minúsculo

100

64

01100100

e

Lowercase e

N/A

E Minúsculo

101

65

01100101

f

Lowercase f

N/A

F Minúsculo

102

66

01100110

g

Lowercase g

N/A

G Minúsculo

103

67

01100111

h

Lowercase h

N/A

H Minúsculo

104

68

01101000

i

Lowercase i

N/A

I Minúsculo

105

69

01101001

j

Lowercase j

N/A

J Minúsculo

106

6A

01101010

k

Lowercase k

N/A

K Minúsculo

107

6B

01101011

l

Lowercase l

N/A

L Minúsculo

108

6C

01101100

m

Lowercase m

N/A

M Minúsculo

109

6D

01101101

n

Lowercase n

N/A

N Minúsculo

110

6E

01101110

o

Lowercase o

N/A

O Minúsculo

111

6F

01101111

p

Lowercase p

N/A

P Minúsculo

112

70

01110000

q

Lowercase q

N/A

Q Minúsculo

113

71

01110001

r

Lowercase r

N/A

R Minúsculo

114

72

01110010

s

Lowercase s

N/A

S Minúsculo

115

73

01110011

t

Lowercase t

N/A

T Minúsculo

116

74

01110100

u

Lowercase u

N/A

U Minúsculo

117

75

01110101

v

Lowercase v

N/A

V Minúsculo

118

76

01110110

w

Lowercase w

N/A

W Minúsculo

119

77

01110111

x

Lowercase x

N/A

X Minúsculo

120

78

01111000

y

Lowercase y

N/A

Y Minúsculo

121

79

01111001

z

Lowercase z

N/A

Z Minúsculo

122

7A

01111010

{

Left curly brace

N/A

Chave Esquerda

123

7B

01111011

|

Vertical bar

N/A

Barra Vertical

124

7C

01111100

}

Right curly brace

N/A

Chave Direita

125

7D

01111101

DELL

Delete

^?

Deletar

127

7F

01111111

Por convenção, pode-se encontrar valores decimais, hexadecimais e binários escritos com os seguintes prefixo:

  • Decimal: sem prefixos

  • Hexadecimal: prefixo 0x ou 0X

  • Binário: prefixo 0b ou 0B

Assim a notação ficará conforme a tabela abaixo:

Decimal Hexadecimal Binário

76

0x4C

0b01001100

3

0x3

0b00000011

Para maiores informações sobre os caracteres 0x00 a 0x1F, conhecidos como Caracteres de Controle C0, além dos caracteres 0x20 e 0x7F, siga este link.

3. Sequências de Escape

Definição:

  • Sequências de escape são combinações de caracteres que representam caracteres especiais ou de controle, usadas principalmente em linguagens de programação e em texto processado por computadores.

  • Iniciam com uma barra invertida (\) seguida de um ou mais caracteres que especificam uma ação ou um caractere especial.

Uso em Linguagens de Programação:

  • Em linguagens como C, C++, Java, Python, entre outras, sequências de escape permitem incluir caracteres que não podem ser digitados diretamente ou que têm significados especiais.

  • Exemplos comuns:

    • \n: Nova linha (Line Feed)

    • \t: Tabulação horizontal (Horizontal Tab)

    • \r: Retorno de carro (Carriage Return)

4. Caret Notation

Definição:

  • Caret Notation é uma forma de representar caracteres de controle usando um acento circunflexo (^) seguido de uma letra do alfabeto.

  • É uma forma de visualizar caracteres de controle que normalmente não são imprimíveis.

Como Funciona:

  • A letra que segue o acento circunflexo é convertida no código ASCII do caractere de controle correspondente.

    • Exemplo: ^M representa o Carriage Return (CR, ASCII 13), porque M é a 13ª letra do alfabeto.

5. Caret Notation e Sequências de Escape

Caret Notation:

Usada principalmente para visualização e depuração, permitindo que caracteres de controle sejam exibidos em um formato legível por humanos.

Sequências de Escape:

Quando você precisa incluir caracteres de controle ou especiais em strings dentro do código-fonte de um program

Exemplo Comparativo:

Sequência de Escape em Código C:

printf("Line 1\nLine 2\n");

Caret Notation em um Terminal ou Editor:

Um arquivo contendo um Carriage Return pode ser visualizado como:

Line 1^M
Line 2

6. Resumo: Notações Caret e Sequências de Escape em C

  • Caret Notation:

  • Permite a visualização de caracteres de controle em formato legível.

  • Exemplo: ^M para Carriage Return.

  • Sequências de Escape:

  • Representam caracteres de controle em strings de linguagens de programação.

  • Exemplo: \n para Line Feed.

7. Caractere NULL

O caractere NULL (NUL) tem um significado específico em programação e sistemas que usam strings de caracteres terminadas por NULL, como em linguagem de programação C e outras.

O principal uso do caractere NULL é indicar o fim de uma string de caracteres. Em linguagens como C, as strings de caracteres são representadas como sequências de caracteres terminadas por NULL. O caractere NULL é representado pelo valor 0 (zero) e é usado para indicar o término da string. Isso permite que as funções de manipulação de strings percorram os caracteres até encontrar o NULL, indicando que não há mais caracteres na string.

Por exemplo, a string "HELLO" seria representada como:

['H', 'E', 'L', 'L', 'O', '\0']

O caractere NULL ('\0') indica o fim da string e permite que funções como printf ou strlen saibam onde a string termina.

Essa convenção é fundamental para muitas operações de manipulação de strings, já que fornece uma maneira clara de determinar o comprimento de uma string sem precisar armazenar explicitamente o comprimento separadamente.

Portanto, o uso do caractere NULL está diretamente relacionado à manipulação de strings em linguagens de programação onde essa convenção é adotada.

8. Resumo de alguns Caracteres de Controle

  1. NUL (Null Character) - '\0'

    • Código: 00 (Hex), 000 (Octal), 00000000 (Binário)

    • Máquina de Escrever: Não aplicável.

    • Teleprinter: Inicialmente usado para preencher o tempo de transmissão, não tinha impacto visual.

    • Uso Atual: Em computação, indica o fim de uma string em linguagens como C.

  2. SOH (Start of Heading)

    • Código: 01 (Hex), 001 (Octal), 00000001 (Binário)

    • Máquina de Escrever: Não aplicável.

    • Teleprinter: Indicava o início de uma sequência de cabeçalho.

    • Uso Atual: Controla protocolos de comunicação para sinalizar o início de uma mensagem.

  3. STX (Start of Text)

    • Código: 02 (Hex), 002 (Octal), 00000010 (Binário)

    • Máquina de Escrever: Não aplicável.

    • Teleprinter: Sinalizava o início do texto da mensagem.

    • Uso Atual: Usado em protocolos de comunicação para indicar o começo do texto.

  4. ETX (End of Text)

    • Código: 03 (Hex), 003 (Octal), 00000011 (Binário)

    • Máquina de Escrever: Não aplicável.

    • Teleprinter: Indicava o fim do texto de uma mensagem.

    • Uso Atual: Marca o fim de um bloco de texto em protocolos de comunicação.

  5. EOT (End of Transmission)

    • Código: 04 (Hex), 004 (Octal), 00000100 (Binário)

    • Máquina de Escrever: Não aplicável.

    • Teleprinter: Sinalizava o término de uma transmissão.

    • Uso Atual: Usado para terminar uma sessão de comunicação.

  6. ENQ (Enquiry)

    • Código: 05 (Hex), 005 (Octal), 00000101 (Binário)

    • Máquina de Escrever: Não aplicável.

    • Teleprinter: Usado para solicitar uma resposta.

    • Uso Atual: Pergunta sobre a integridade da conexão ou dispositivo.

  7. ACK (Acknowledge)

    • Código: 06 (Hex), 006 (Octal), 00000110 (Binário)

    • Máquina de Escrever: Não aplicável.

    • Teleprinter: Confirmava a recepção de uma mensagem.

    • Uso Atual: Indica reconhecimento de uma mensagem recebida.

  8. BEL (Bell) - '\a'

    • Código: 07 (Hex), 007 (Octal), 00000111 (Binário)

    • Máquina de Escrever: Sinal sonoro.

    • Teleprinter: Acionava um som ou campainha.

    • Uso Atual: Emite um som de alerta em terminais.

  9. BS (Backspace) - '\b'

    • Código: 08 (Hex), 010 (Octal), 00001000 (Binário)

    • Máquina de Escrever: Movia o carro uma posição para trás.

    • Teleprinter: Voltava uma posição de impressão.

    • Uso Atual: Move o cursor uma posição para trás.

  10. HT (Horizontal Tab) - '\t'

    • Código: 09 (Hex), 011 (Octal), 00001001 (Binário)

    • Máquina de Escrever: Movia o carro para a próxima tabulação.

    • Teleprinter: Movia para a próxima posição de tabulação.

    • Uso Atual: Move o cursor para a próxima tabulação horizontal.

  11. LF (Line Feed) - '\n'

    • Código: 0A (Hex), 012 (Octal), 00001010 (Binário)

    • Máquina de Escrever: Movia o papel uma linha para cima.

    • Teleprinter: Movia o papel uma linha para cima.

    • Uso Atual: Move o cursor para a próxima linha.

  12. VT (Vertical Tab) - '\v'

    • Código: 0B (Hex), 013 (Octal), 00001011 (Binário)

    • Máquina de Escrever: Não comumente usada.

    • Teleprinter: Movia o papel para a próxima tabulação vertical.

    • Uso Atual: Move o cursor para a próxima tabulação vertical.

  13. FF (Form Feed) - '\f'

    • Código: 0C (Hex), 014 (Octal), 00001100 (Binário)

    • Máquina de Escrever: Movia o papel para o início da próxima página.

    • Teleprinter: Movia o papel para o início da próxima página ou formulário.

    • Uso Atual: Avança para a próxima página.

  14. CR (Carriage Return) - '\r'

    • Código: 0D (Hex), 015 (Octal), 00001101 (Binário)

    • Máquina de Escrever: Movia o carro para o início da linha.

    • Teleprinter: Movia o cabeçote de impressão para o início da linha.

    • Uso Atual: Retorna o cursor ao início da linha.

  15. SO (Shift Out)

    • Código: 0E (Hex), 016 (Octal), 00001110 (Binário)

    • Máquina de Escrever: Não aplicável.

    • Teleprinter: Ativava um conjunto alternativo de caracteres.

    • Uso Atual: Troca para um conjunto alternativo de caracteres.

  16. SI (Shift In)

    • Código: 0F (Hex), 017 (Octal), 00001111 (Binário)

    • Máquina de Escrever: Não aplicável.

    • Teleprinter: Retornava ao conjunto padrão de caracteres.

    • Uso Atual: Retorna ao conjunto padrão de caracteres.

  17. DLE (Data Link Escape)

    • Código: 10 (Hex), 020 (Octal), 00010000 (Binário)

    • Máquina de Escrever: Não aplicável.

    • Teleprinter: Indicava controle de comunicação de dados.

    • Uso Atual: Utilizado em protocolos de comunicação para sinalizar dados especiais.

  18. NAK (Negative Acknowledge)

    • Código: 15 (Hex), 025 (Octal), 00010101 (Binário)

    • Máquina de Escrever: Não aplicável.

    • Teleprinter: Indicava a falha na recepção da mensagem.

    • Uso Atual: Usado para indicar a falha na recepção de dados.

  19. SYN (Synchronous Idle)

    • Código: 16 (Hex), 026 (Octal), 00010110 (Binário)

    • Máquina de Escrever: Não aplicável.

    • Teleprinter: Mantinha a sincronização entre dispositivos.

    • Uso Atual: Mantém a sincronização entre dispositivos.

  20. ETB (End of Transmission Block)

    • Código: 17 (Hex), 027 (Octal), 00010111 (Binário)

    • Máquina de Escrever: Não aplicável.

    • Teleprinter: Indicava o fim de um bloco de transmissão.

    • Uso Atual: Indica o fim de um bloco de transmissão de dados.

  21. CAN (Cancel)

    • Código: 18 (Hex), 030 (Octal), 00011000 (Binário)

    • Máquina de Escrever: Não aplicável.

    • Teleprinter: Cancelava a mensagem atual.

    • Uso Atual: Indica o cancelamento de dados ou comandos.

  22. EM (End of Medium)

    • Código: 19 (Hex), 031 (Octal), 00011001 (Binário)

    • Máquina de Escrever: Não aplicável.

    • Teleprinter: Indicava o fim do meio de comunicação.

    • *Uso Atual: Indica o fim de um meio de armazenamento.

  23. SUB (Substitute)

    • Código: 1A (Hex), 032 (Octal), 00011010 (Binário)

    • Máquina de Escrever: Não aplicável.

    • Teleprinter: Substituía caracteres corrompidos.

    • Uso Atual: Substitui caracteres inválidos ou corrompidos.

  24. ESC (Escape)

    • Código: 1B (Hex), 033 (Octal), 00011011 (Binário)

    • Máquina de Escrever: Não aplicável.

    • Teleprinter: Iniciava sequências de controle especiais.

    • Uso Atual: Inicia sequências de escape para comandos especiais.

  25. FS (File Separator)

    • Código: 1C (Hex), 034 (Octal), 00011100 (Binário)

    • Máquina de Escrever: Não aplicável.

    • Teleprinter: Separava arquivos.

    • Uso Atual: Separa arquivos em sistemas de dados.

  26. GS (Group Separator)

    • Código: 1D (Hex), 035 (Octal), 00011101 (Binário)

    • Máquina de Escrever: Não aplicável.

    • Teleprinter: Separava grupos de dados.

    • Uso Atual: Separa grupos de dados em sistemas de processamento.

  27. RS (Record Separator)

    • Código: 1E (Hex), 036 (Octal), 00011110 (Binário)

    • Máquina de Escrever:* Não aplicável.

    • Teleprinter: Separava registros.

    • Uso Atual: Separa registros em sistemas de dados.

  28. US (Unit Separator)

    • Código: 1F (Hex), 037 (Octal), 00011111 (Binário)

    • Máquina de Escrever: Não aplicável.

    • Teleprinter: Separava unidades de dados.

    • Uso Atual: Separa unidades de dados em sistemas de processamento.

9. Teleprinter

O teleprinter (ou teletipo) era um dispositivo de telecomunicações que combinava um teclado e uma impressora para enviar e receber mensagens de texto através de linhas telefônicas ou circuitos telegráficos.

Origens e Evolução

  • Máquinas de Escrever e Telégrafo:

    • Máquinas de Escrever: Inspirado pelas máquinas de escrever, permitia a entrada de texto.

    • Telégrafo: Baseava-se na tecnologia do telégrafo para transmitir dados.

Funcionamento Básico

  1. Os operadores digitavam mensagens em um teclado.

  2. Cada tecla pressionada gerava um código elétrico.

  3. Esse código era transmitido através de linhas de comunicação para outro teleprinter.

  4. No destino, os códigos eram convertidos de volta em texto e impressos.

Uso em Telecomunicações:

  • Amplamente utilizado para comunicação empresarial e governamental antes do advento dos computadores e da internet.

  • Permitiu a comunicação rápida e precisa entre locais distantes.

Tecnologias Relacionadas

  • Baudot Code: Um dos primeiros códigos usados para codificar os caracteres transmitidos.

  • ASCII: Posteriormente adotado como um padrão para codificação de caracteres, substituindo o Baudot.

Modernidade

  • Substituição: Gradualmente substituído por fax, computadores e e-mail.

  • Legado: Conceitos e tecnologias desenvolvidos para teleprinters influenciaram sistemas de comunicação digital modernos, como modems e terminais de computador.

O teleprinter foi essencial para a evolução das comunicações eletrônicas, representando um passo importante na transição das comunicações analógicas para digitais.

FIM ■