Representando números em um computador. Perguntas e tarefas

Lar / Sistemas operacionais

Apresentação de informações em um computador.

1. Representação inteira

2. Representação de números reais

3. Apresentação informações de texto

4. Apresentação de informações gráficas e de vídeo

5. Apresentação de informações de áudio

6. Métodos de compressão de informação digital

Desde o final do século XX, século da informatização, a humanidade utiliza diariamente o sistema numérico binário, uma vez que todas as informações processadas pelos computadores modernos são apresentadas na forma binária.

Cada registro de um dispositivo aritmético de computador, cada célula de memória é um sistema físico composto por um certo número de elementos homogêneos que possuem dois estados estáveis, um dos quais corresponde a zero e o outro a um. Cada um desses elementos é usado para registrar um dos bits de um número binário. É por isso que cada elemento da célula é chamado de dígito.

(k-1)º dígito ……… 1ª categoria 0º dígito

Fig.1 Célula de k dígitos.

A informática surgiu como meio de automatizar cálculos, por isso os primeiros computadores foram chamados de computadores - computadores eletrônicos. Hoje, os computadores processam vários tipos de informações: numéricas, textuais, sonoras, gráficas. No entanto computador moderno só pode armazenar e processar informação discreta. Portanto, qualquer tipo de informação que esteja sujeita ao processamento computacional deve ser codificada de uma forma ou de outra por meio de uma sequência finita de inteiros, que é então convertida em formato binário para armazenamento no computador.

Nesta palestra veremos como é resolvido o problema de conversão da informação fonte em uma representação computacional para cada tipo de informação. Será mostrado com que precisão a representação computacional reflete a informação original, e a palavra “com precisão” aqui se aplica não apenas a números (precisão de representação), mas também a outros tipos de informação. Nomeadamente, considera-se o grau de realismo na transmissão das tonalidades das cores no monitor, o grau de proximidade da música reproduzida com o som natural dos instrumentos musicais ou da voz humana, etc. as informações do computador são chamadas de tarefa amostragem ou quantização. Este problema deve ser resolvido para todos os tipos de informação. Os métodos de amostragem para diferentes tipos de informação são diferentes, mas as abordagens para resolver este problema baseiam-se nos mesmos princípios.



Representação de inteiros.

Qualquer número inteiro pode ser considerado um número real, mas com parte fracionária zero, ou seja, pode-se limitar-se à representação de números reais em um computador e à implementação de operações aritméticas sobre eles. Porém, para fazer uso eficiente da memória, aumentar a velocidade dos cálculos e introduzir a operação de divisão por um número inteiro com resto, os números inteiros são representados de maneiras especialmente projetadas.

A introdução de métodos especiais de representação de inteiros justifica-se pelo fato de que muitas vezes em problemas resolvidos por computador, muitas operações são reduzidas a operações sobre inteiros. Por exemplo, em problemas de natureza económica, os dados são o número de ações, funcionários, peças, veículos, etc., que no seu significado são números inteiros. Os inteiros são usados ​​​​para indicar data e hora e para numerar vários objetos: elementos de arrays, registros em bancos de dados, endereços de máquinas, etc.

Para representação computacional de inteiros, geralmente são utilizados vários métodos de representação diferentes, diferindo entre si no número de dígitos e na presença ou ausência de um dígito de sinal. A representação sem sinal só pode ser usada para números inteiros não negativos;

Com representação sem sinal, todos os bits da célula são alocados ao próprio número. Quando representado com um sinal, o dígito mais significativo (esquerdo) é atribuído ao sinal do número, os restantes dígitos são atribuídos ao próprio número. Se o número for positivo, então 0 será colocado no bit assinado; se o número for negativo, então 1 será colocado. Obviamente, em células do mesmo tamanho, você pode representar um intervalo maior de inteiros não negativos na representação sem sinal do que. números assinados. Por exemplo, em um byte (8 bits) você pode escrever números positivos de 0 a 255, e com um sinal - apenas até 127. Portanto, se você sabe de antemão que um determinado valor numérico é sempre não negativo, então é é mais lucrativo considerá-lo como não assinado.

Dizem que os números inteiros em um computador são armazenados no formato c ponto fixo(outra interpretação - ponto fixo).

Representação de inteiros positivos.

Para obter uma representação computacional de um número inteiro sem sinal em uma célula de memória de k bits, basta convertê-lo para o sistema numérico binário e preencher o resultado resultante à esquerda com zeros até k dígitos. É claro que existe um limite para o número de números que podemos escrever em uma célula de k bits.

O número máximo representável corresponde a unidades em todos os dígitos da célula (um número binário que consiste em k unidades). Para uma representação de k bits, será igual a 2 k - 1. O número mínimo é representado por zeros em todos os dígitos da célula e é sempre igual a zero; Abaixo estão os números máximos para a representação sem sinal para vários valores de k:

Com a representação assinada de inteiros, conceitos como códigos de avanço, reverso e adicionais .

Definição 1. Representação de um número em uma forma familiar aos humanos “ magnitude do sinal ", em que o dígito mais significativo da célula é atribuído ao sinal, o restante k - 1 dígitos - sob os dígitos do número, chamado código direto.

Por exemplo, códigos diretos de números binários 11001 2 E -11001 2 para uma célula de oito bits são iguais 00011001 E 10011001 respectivamente. Inteiros positivos são representados no computador usando código direto. O código direto de um número inteiro negativo difere do código direto do número positivo correspondente no conteúdo do bit de sinal. Mas em vez de código direto, os computadores usam código de complemento de dois para representar números inteiros negativos.

Observe que o número positivo máximo que pode ser escrito em notação com sinal em k dígitos é 2k-1 - 1 , que é quase duas vezes menor que o número máximo na representação não assinada nos mesmos k bits.

Pergunta 1. É possível representar o número 200 com um sinal numa célula de 8 bits?

Questões.

  1. Justifique a viabilidade de representar números inteiros de maneira especial em um computador.
  2. Dê um exemplo de multiplicação de dois números positivos em um número limitado de dígitos, resultando em um número negativo.
  3. Liste e explique todos os erros que podem ocorrer ao realizar operações aritméticas em números inteiros em aritmética computacional em um número limitado de dígitos.
  4. Mostre como o uso do código de complemento de dois permite substituir a operação de subtração por uma operação de adição.
  5. Em uma célula de oito dígitos, anote os códigos adicionais dos seguintes números binários: a) -1010; b) -1001; c)-11; e) -11011.
  6. É possível dizer pela forma do complemento de um número se ele é par ou ímpar?
  7. Encontre os equivalentes decimais dos números negativos escritos em complemento de dois: a) 11000100; b) 11111001.
  8. Qual dos números 43 16, 101010 2, 129 10 e -135 10 pode ser armazenado em um byte (8 bits)?
  9. Obtenha uma representação de 16 bits dos seguintes números: a) 25; b) -610.
  10. Para os números A = 1110 2, B = 1101 2, execute as seguintes operações: A + B; UMA-B; B-A; -UMA-UM; -B-B; -A - B (em representação assinada de oito bits).

Questões.

1. Escreva os seguintes números decimais na forma normalizada:

a) 217.934; c) 10.0101; b) 75321; e) 0,00200450.

2. Reduza os seguintes números à forma normalizada, usando as bases de seus sistemas numéricos como P:

a) -0,000001011101 2 ;

b) 98765432У 10;

c) 123456789, ABCD 16.

3. Compare os seguintes números:

a) 318,4785 × 10 9 e 3,184785 × 10 11;

b) 218,4785 × 10 -3 e 21847,85 × 10 -4 ;

c) 0,1101 2 × 2 2 e 101 2 × 2 -2.

4. Compare a faixa de representação de números de ponto flutuante no formato de 32 bits (24 bits para mantissa e 6 bits para módulo) com a faixa de representação de números de ponto fixo no mesmo formato.

5. Quais são as vantagens da representação computacional de números de ponto flutuante sobre a representação de ponto fixo que usamos com mais frequência em vida cotidiana?

6. Execute as seguintes operações aritméticas em números decimais normalizados de acordo com as regras da aritmética computacional real (6 dígitos significativos devem ser armazenados na mantissa):

a) 0,397621 x 10 3 + 0,237900 x 10 1;

b) 0,982563 x 10 2 - 0,745623 x 10 2;

c) 0,235001 x 10 2 0,850000 x 10 3;

d) 0,117800 x 10 2: 0,235600 x 10 3.

Ao realizar esta tarefa, você deve normalizar a mantissa do resultado da operação aritmética correspondente e, em seguida, arredondá-la

7. Execute a operação em códigos de máquina de números de ponto flutuante no formato de 32 bits: X = A + B, onde A = 125,75 e B = -50.

8. Liste e explique todos os erros que podem ocorrer durante operações aritméticas com números normalizados em um número limitado de dígitos.

Quantização de cores.

Conforme mencionado acima, as informações gráficas de origem natural, quando inseridas em um computador, devem ser submetidas a operações de amostragem espacial e quantização de cores.

A quantização (codificação) da cor é baseada em uma descrição matemática da cor, que, por sua vez, depende do fato de que as cores podem ser medidas e comparadas. A disciplina científica que estuda a medição das características da cor é chamada metrologia de cores, ou colorimetria. Uma pessoa tem uma percepção de cores muito complexa; basta notar que os centros visuais do cérebro dos recém-nascidos passam vários meses (!) apenas treinando para ver. Portanto, a descrição matemática da cor também não é trivial.

Cientistas por muito tempo não foi possível explicar o processo de percepção das cores. Até meados do século XVII prevalecia a teoria especulativa de Aristóteles, segundo a qual todas as cores são formadas pela mistura do preto com o branco. Os primeiros resultados sérios nesta área foram obtidos por Isaac Newton, que descreveu a natureza compósita da luz branca e estabeleceu que as cores espectrais são indecomponíveis e que misturando cores espectrais é possível sintetizar a cor branca e todos os tipos de tonalidades de outras cores. Newton identificou as sete cores espectrais mais visíveis no espectro da luz branca e as chamou de principais - vermelho, laranja, amarelo, verde, azul, índigo e violeta. Cerca de meio século depois, em 1756, o notável cientista russo M.V. Lomonosov formulou a chamada teoria das cores de três componentes, resumindo o enorme material empírico que acumulou ao desenvolver a tecnologia para a produção de vidros e mosaicos coloridos. Ao pesquisar as questões da coloração do vidro, Lomonosov descobriu que para dar uma tonalidade de cor ao vidro de qualquer M.V. Lomonosov (1711-1765), basta usar apenas três tintas básicas, misturando-as em certas proporções. Cerca de um século depois, o notável cientista alemão Hermann Grassmann (1809-1877) introduziu um aparato matemático na forma das leis de Grassmann para síntese aditiva de cores na teoria das cores de três componentes. As mais importantes delas são as duas leis a seguir.

Lei da tridimensionalidade: usando três cores linearmente independentes, qualquer cor pode ser expressa de forma única. As cores são consideradas linearmente independentes se nenhuma delas puder ser obtida pela mistura das outras.

Lei da continuidade: quando a composição de uma mistura de cores muda continuamente, a cor resultante também muda continuamente. Você pode escolher uma cor infinitamente próxima de qualquer cor.

A teoria das cores de três componentes tornou-se a base da colorimetria, mas a fundamentação dessa teoria apareceu apenas na virada dos séculos 19 para 20, após o estudo da fisiologia dos órgãos visuais.

As leis colorimétricas de Grassmann estabelecem propriedades gerais modelos matemáticos cores. Na verdade, as leis de Grassmann postulam que qualquer cor pode ser associada inequivocamente a um determinado ponto no espaço tridimensional. Pontos no espaço que correspondem às cores percebidas pelo olho humano formam um certo corpo convexo no espaço. O preto absoluto sempre corresponde ao ponto (0, 0, 0). Assim, as cores podem ser pensadas como pontos ou vetores em um espaço de cores tridimensional. Cada modelo de cores define nele um determinado sistema de coordenadas, no qual as cores primárias do modelo desempenham o papel de vetores de base. E a quantização de cores é essencialmente uma discretização do espaço de cores.

EM tecnologia informática Os modelos de cores mais comumente usados ​​são:

  • RGB (vermelho-verde-azul, vermelho-verde-azul).
  • CMYK (ciano-magenta-amarelo-preto, ciano-magenta-amarelo-preto).
  • HSB (matiz-saturação-brilho, matiz-saturação-brilho).

Para eliminar a ambigüidade na interpretação dos termos “brilho”, “saturação”, “matiz da cor”, vamos explicá-los.

Brilhoé uma característica da cor, cuja definição coincide basicamente com o conceito cotidiano de brilho e com o conceito físico de iluminação ou luminosidade. As cores vermelho brilhante, vermelho e vermelho escuro diferem precisamente no brilho. Do ponto de vista físico, o brilho é uma medida quantitativa do fluxo de energia luminosa emitida ou refletida por um objeto em direção ao observador. Portanto, sob luz solar intensa e ao entardecer, o mesmo padrão de cores parece diferente. Neste caso, as tonalidades das cores não mudam, apenas o brilho das cores é diferente.

Tonalidade de cor e saturação são duas outras características independentes de cor. Vamos ter um conjunto de tintas de cores diferentes. Ao misturar diferentes tintas obteremos novas cores. Por exemplo, uma mistura de quantidades iguais de tinta amarela e azul produzirá tinta verde. A tonalidade, ou matiz, do objeto em questão está relacionada à composição espectral da radiação. Pelo tom da cor de um objeto, podemos julgar a cor do objeto - azul, verde, vermelho, etc. Certas partes do espectro visível causam a sensação de cores diferentes.

Saturação caracteriza o grau de “diluição” de um tom de cor com o branco. Por exemplo, se a tinta vermelha brilhante (saturada) for diluída com branco, a tonalidade da cor permanecerá a mesma, apenas a saturação mudará. Exatamente da mesma forma, marrom, amarelo e limão têm a mesma tonalidade - amarelo, sua diferença está na saturação da tonalidade da cor. A luz de uma fonte monocromática tem a maior saturação.

Observe que para as cores branca e preta a saturação é 0%, ou seja, essas cores não possuem saturação. Por isso, ao misturá-los com tinta colorida, alteramos sua saturação e não sua tonalidade.

Modelo de cores RGB.

No modelo RGB, as cores primárias são vermelho, verde E azul. Este modelo usado principalmente ao exibir imagens gráficas na tela de um monitor, TV, telefone celular Ao misturar as três cores primárias, todas as outras cores são sintetizadas, seu brilho condicional (intensidade) é especificado por números reais de 0 a 1 (o valor 1 corresponde ao brilho máximo da cor correspondente que um dispositivo gráfico pode representar) . O modelo RGB define um espaço de cores na forma de um cubo unitário com eixos “brilho da componente vermelha”, “brilho da componente verde” e “brilho da componente azul”.


Características características do modelo RGB

Qualquer ponto do cubo ( r, g, b ) define uma determinada cor.

O ponto (0, 0, 0) corresponde ao preto, o ponto (1, 1, 1) ao branco e a linha (0, 0, 0) - (1, 1, 1) descreve todos os tons de cinza: de preto para branco.

Ao se mover em linha reta de (0, 0, 0) através do ponto ( r, g, b) obtemos todas as gradações de brilho da cor ( r, g, b), do mais escuro ao mais claro. Por exemplo, (1/4, 1/4, 0) - marrom escuro, (1/2, 1/2, 0) - marrom, (3/4, 3/4, 0) - marrom-amarelado, ( 1 , 1, 0) - amarelo.

Nas faces do cubo ( R = 0}, {g = 0) e ( b = 0) estão localizadas as cores mais saturadas.

Quanto mais próximo um ponto estiver da diagonal principal (0, 0, 0)-(1, 1, 1), menos saturada será a cor correspondente.

O modelo de cores RGB tem uma base fisiológica. O olho humano contém quatro tipos de receptores visuais: bastonetes (receptores de intensidade) e

três tipos de “cones” (receptores de cores). Cada tipo de cone é sensível à luz em sua estreita faixa de comprimentos de onda, para cones tipos diferentes Os máximos de sensibilidade ocorrem em diferentes comprimentos de onda, as faixas de sensibilidade se sobrepõem parcialmente:

É graças à sensibilidade espectral desigual e às faixas de sensibilidade sobrepostas que o olho humano é capaz de distinguir um grande número de cores (cerca de 10 milhões).

Se você enviar um sinal de luz composto com uma proporção corretamente selecionada de brilho das cores vermelha, verde e azul para o olho, os centros visuais do cérebro não serão capazes de distinguir a substituição e concluirão que a cor desejada está sendo observada ! Esse mecanismo para sintetizar tons de cores é usado em todos os tipos modernos de monitores coloridos, televisores e telas de telefones celulares.

Para utilizar o modelo matemático RGB para representação computacional real de informações gráficas, é necessário quantizar o espaço de cores, ou seja, encontrar uma forma de representar os valores reais do brilho dos componentes da cor de forma discreta.

A maneira mais fácil de conseguir isso é converter números reais do intervalo = 100 – 43 = 57 C = 95 + [-B dk ] – 100 = – 100 = 152 – 100 = 52 A unidade no dígito mais significativo da soma pode simplesmente ser riscado. É necessário encontrar uma maneira de obter a adição de um número arbitrário X a q n sem usar subtração: C = A – B = A + (-B) = A + (-B) + q n – q n = A +(q n -1- B)- q n + 1 A expressão q n – 1 – B determina o número B obtido substituindo cada dígito do número B por sua adição ao número q –1. Então, = = 999. O código reverso de B é chamado de código reverso do número B; q n -1 - constante de formação de código reverso


A partir do código reverso é fácil obter um código adicional: B + B = q n -1 q n - B = B + 1 Código adicional do código reverso O código adicional é obtido adicionando um ao dígito menos significativo do código reverso . Portanto, os complementos dos números binários podem ser encontrados sem a operação de subtração. No código reverso, assim como no código direto, há um zero negativo e um zero positivo. Somente no código de complemento de dois o zero tem uma representação única. Para um determinado comprimento da grade de bits, o código complementar representa um número negativo a mais que os positivos. Vamos concordar em denotar os códigos direto, reverso e adicional do número A por [A pk], [A ok], [A dk].


Exemplo. Encontre os códigos direto, reverso e adicional dos números A = 34 e B = [A pk ]= , [A ok ]= , [A dk ]= [V pk ]= , [V ok ]= , [V dk ] = Algoritmo para obtenção de código adicional de número negativo. 1. Apresente o módulo de um número em código direto em k dígitos binários. 2. Inverta os valores de todos os bits: substitua todos os zeros por uns e uns por zeros (obtendo assim um código reverso de k bits do número original); 3.Adicione um ao código reverso resultante, interpretado como um número binário não negativo de k bits.


Exemplos. 1. Dado um número inteiro negativo número decimal M=-20. Representa um número em código de máquina em uma grade de 16 bits em sistemas numéricos binários e hexadecimais. M=-20= 2 = 2 = 2 = 16 =FFEC


2. Um número inteiro é fornecido na forma de código de máquina binário hexadecimal. Determine o valor decimal deste número: K a =FFD4 O primeiro dígito é F, portanto o número é negativo e é armazenado no computador na forma de código de máquina adicional. FFD4 16 = [ dk ] [ ok ] – código reverso do número PC = [ pk ] – código binário direto do número Então o número decimal a = = - (32+8+4) = -44 – número decimal


Método 2: através do sistema numérico hexadecimal K a =FFD4


Ações em códigos de máquina de inteiros Dados: números decimais A = 34 e B = 30 Encontre: A+B, A – B, B – A em códigos de máquina binários em uma grade de 8 bits.


= [A ok ] = [A dk ] = [-A pk ] = [-A ok ] = [-A dk ] = [-B pk ] = [-B ok ] = [-V dk ] = [V pk ] = [V ok ] = [V dk ] =


[A + B] NS = = A + B = 64 [A – B] NS = = A – B = 4 [B – A] NS = =




Ações em códigos de máquina de números de ponto fixo (em sistema de numeração hexadecimal) Dados: números decimais A = 34 e B = 30 Encontre: A+B, A – B, B – A em códigos de máquina hexadecimais em uma grade de 16 bits. 1) A=34=22 16 V=30=1E 16 pk = PC =001E 16 K A + K B = E = A + B = 64 2) PK =801E 16 DK = E 16 = FFE2 16 K A + K B = FFE2 = A - B = = 4


Exemplos Números reais podem ser representados como códigos de máquina de números de ponto flutuante em uma grade de 32 bits em 16s/s: a) A=32008,5b) B= 0,5 c) C= ​​15d) D= Vamos encontrar as mantissas normalizadas e características desses números: a) А=32008,5=7D08,8 16 =0,7D m A =0,7D088p xA =4+40=44 16 = Sign- 0 Característica Parte fracionária da mantissa Característica da mantissa normalizada K A = = = 43FA > 0 0">


B) B= 0,5= -7D08,8 16 = - 0,7D m B = -0,7D088p xB =4+40=44 16 = Sinal- 1 Característica Parte fracionária da mantissa Característica da mantissa normalizada K B = = = C3FA


0 14 16 c) D= - = - 0,9 16 m B =0,9 16 p xB =40+0=40" title="c) C= ​​​​15 =F,E 16 m c =0 ,FE 16 p xA =40+1=41 16 Sinal - 0 Característica - 1000001 Parte fracionária - 1111 1110 0000 0000 0000 0000 mantissa K C = 0,1000001,1111 1110 0000 0000 0000 0000 2 =41FE000 0 16 > 0 14 16 c) D = - = - 0,9 16 m B =0,9 16 p xB =40+0=40" class="link_thumb"> 28 !} c) C= ​​​​15 =F,E 16 m c =0,FE 16 p xA =40+1=41 16 Sinal - 0 Característica Parte fracionária da mantissa K C = = =41FE > c) D= - = - 0,9 16 m B =0,9 16 p xB =40+0=40 16 Sinal- 1 Característica Parte fracionária da mantissa K D = = C 0 14 16 c) D= - = - 0,9 16 m B =0,9 16 p xB = 40+ 0=40"> 0 14 16 c) D= - = - 0,9 16 m B =0,9 16 p xB =40+0=40 16 Sinal - 1 Característica - 1000000 Parte fracionária - 1001 0000 0000 0000 0000 0000 mantissa K D = 1,1000000 .1001 0000 0000 0000 0000 0000 2 = C0900000 16 0 14 16 c) D= - = - 0,9 16 m B =0,9 16 p xB =40+0=40" title=" в) С= 15 = F,E 16 m c =0,FE 16 p xA =40+1=41 16 Sinal - 0 Característica - 1000001 Parte fracionária - 1111 1110 0000 0000 0000 0000 mantissa K C = 0,1000001,1111 1110 0000 0000 0000 00 2 = =41FE0000 16 > 0 14 16 c) D= - = - 0,9 16 m B =0,9 16 p xB =40+0=40"> title="c) C= ​​​​15 =F,E 16 m c =0,FE 16 p xA =40+1=41 16 Sinal - 0 Característica - 1000001 Parte fracionária - 1111 1110 0000 0000 0000 0000 mantissa K C = 0,1000001,1111 1110 0000 0000 0000 0000 2 = =41FE0000 16 > 0 14 16 c) D= - = - 0,9 16 m B =0,9 16 p xB =40+0=40">!}


Ações sobre números apresentados na forma exponencial 1. Os números na forma exponencial são armazenados na memória em código direto com mantissas normalizadas. 2. A adição de códigos é realizada somando mantissas apenas com as mesmas ordens (características) dos termos. A ordem mais alta é escolhida como a ordem geral. 3. Algoritmos para operação de adição algébrica após equalização de características dependem dos sinais dos termos. 4.Os resultados em código direto são normalizados.


Exemplos Execute a adição de código de máquina de números de ponto flutuante A e B em uma grade de 32 bits. Como resposta, anote o código do resultado (no 2º e 16º s/s) e o número decimal correspondente a este código 1)K A =43.F34000K B = C1.A13000 a)m A =00.F34m B =00 .A13 P Ax =43P Bx =41 => P =2 => m B =00.00A13 – PC _ A13 FF.FF5ED b)m A +m B = 00.F34 FF.FF5ED 100.F29ED > 0 => m A+ B = 00.F29ED P =2 => m B =00.00A13 – PC _100.00000 00.00A13 FF.FF5ED b)m A +m B = 00.F34 FF.FF5ED 100.F29ED > 0 => m A+B = 00.F29ED" >


P A+B = 3A+B = 0.F29ED = F29,ED 16 = /16+13/256 = /256 K A+B = = = 43.F29ED0

Palavras-chave:

  • descarga
  • representação inteira sem sinal
  • representação inteira assinada
  • representação de números reais
  • formato de ponto flutuante

1.2.1. Representação inteira

A memória do computador consiste em células, cada uma das quais é um sistema físico composto por um certo número de elementos homogêneos. Esses elementos possuem dois estados estáveis, um dos quais corresponde a zero e o outro a um. Cada um desses elementos serve para armazenar um dos bits - os dígitos de um número binário. É por isso que cada elemento da célula é chamado de bit ou dígito (Fig. 1.2).

Arroz. 1.2. Célula de memória

Para a representação computacional de inteiros, vários métodos de representação diferentes são usados, diferindo entre si no número de dígitos (os inteiros geralmente recebem 8, 16, 32 ou 64 dígitos) e na presença ou ausência de um dígito de sinal. A representação sem sinal só pode ser usada para números inteiros não negativos;

Difundido em tecnologia informática recebeu dados não assinados. Estes incluem objetos como endereços de células, vários contadores (por exemplo, o número de caracteres no texto), bem como números que indicam a data e hora, o tamanho das imagens gráficas em pixels, etc.

O valor máximo de um número inteiro não negativo é alcançado quando todos os bits da célula contêm uns. Para representação de n bits será igual a 2 n -1. O número mínimo corresponde a n zeros armazenados em n bits de memória e é igual a zero.

A seguir estão os valores máximos para inteiros de n bits sem sinal:

Para obter uma representação computacional de um número inteiro sem sinal, basta converter o número para o sistema numérico binário e preencher o resultado resultante à esquerda com zeros até a capacidade padrão de dígitos.

Exemplo 1. O número 53 10 = 110101 2 na representação de oito dígitos tem a forma:

O mesmo número 53 em dezesseis dígitos será escrito da seguinte forma:

Quando representado com um sinal, o dígito mais significativo (esquerdo) é atribuído ao sinal do número, os restantes dígitos são atribuídos ao próprio número. Se o número for positivo, então O é colocado no bit de sinal, se o número for negativo - 1. Essa representação de números é chamada de código direto. Nos computadores, os códigos diretos são usados ​​para armazenar números positivos em dispositivos de armazenamento para realizar operações em números positivos.

O site do Centro Federal de Informação e Recursos Educacionais (http://fcior.edu.ru/) contém um módulo de informação “Número e seus código de computador" Com este recurso você pode obter Informações adicionais sobre o tema que está sendo estudado.

Para realizar operações com números negativos, um código adicional é usado para substituir a operação de subtração por adição. Você pode descobrir o algoritmo para gerar código adicional usando módulo de informação“Código adicional”, publicado no site do Centro Federal de Informação e Recursos Educacionais (http://fcior.edu.ru/).

1.2.2. Representação de números reais

Qualquer número real A pode ser escrito na forma normal (científica, exponencial):

UMA = ± m q p ,

    m - mantissa do número;

    p - ordem numérica.

Por exemplo, o número 472.000.000 pode ser representado da seguinte forma: 47,2 10 7, 472 10 6, 4720 10 7, etc.

Você pode ter se deparado com a forma normal de escrever números ao realizar cálculos usando uma calculadora, quando recebeu como resposta entradas do seguinte formato: 4,72E+8.

Aqui, o sinal “E” denota a base do sistema numérico decimal e é lido como “multiplicar por dez elevado à potência”.

No exemplo acima, você pode ver que a posição da vírgula decimal em um número pode mudar. Portanto, a representação de números reais na forma normal em um computador é chamada de representação de ponto flutuante.

Para maior consistência, a mantissa é geralmente escrita como uma fração própria com um dígito diferente de zero após a vírgula decimal. Neste caso, o número 472.000.000 seria representado como 0,472 10 9

Um número de ponto flutuante pode ocupar 32 ou 64 bits de memória do computador. Neste caso, são alocados bits para armazenar o sinal de mantissa, sinal de ordem, ordem e mantissa.

O intervalo de representação dos números reais é determinado pelo número de bits alocados para armazenar a ordem do número, e a precisão é determinada pelo número de bits alocados para armazenar a mantissa.

O valor máximo da ordem de um número, como visto no exemplo acima, é 1111111 2 = 127 10 e, portanto, o valor máximo do número é:

0,11111111111111111111111 10 1111111

Tente descobrir por si mesmo qual é o equivalente decimal desse valor.

A ampla gama de representações de ponto flutuante é importante para fins científicos e problemas de engenharia. Ao mesmo tempo, deve ser entendido que algoritmos para processamento de números em formato de ponto flutuante são mais trabalhosos em comparação com algoritmos para processamento de números inteiros.

O mais importante

Para representar números inteiros em um computador, são utilizados vários métodos diferentes, diferindo entre si no número de dígitos (8, 16, 32 ou 64) e na presença ou ausência de um dígito de sinal.

Para representar um número inteiro sem sinal, ele deve ser convertido para o sistema numérico binário e o resultado resultante deve ser preenchido à esquerda com zeros até a capacidade padrão.

Quando representado com um sinal, o dígito mais significativo é atribuído ao sinal do número, os restantes dígitos são atribuídos ao próprio número. Se o número for positivo, então 0 é colocado no bit de sinal, se o número for negativo, então 1. Os números positivos são armazenados no computador em código direto, os números negativos em código complementar.

Os números reais são armazenados em um computador em formato de ponto flutuante. Neste caso, qualquer número é escrito assim:

UMA = ± m q p ,

    m - mantissa do número;

    q - base do sistema numérico;

    p - ordem numérica.

Perguntas e tarefas

  1. Como os números inteiros positivos e negativos são representados na memória do computador?
  2. Qualquer número inteiro pode ser tratado como um número real, mas com parte fracionária zero. Justifique a viabilidade de ter formas especiais de representação computacional de inteiros.
  3. Represente o número 63 10 em formato não assinado de 8 bits.
  4. Encontre os equivalentes decimais dos números usando seus códigos diretos, escritos em formato assinado de 8 bits:
  5. Qual dos números 443 8, 101010 2, 256 10 pode ser armazenado no formato de 8 bits?
  6. Escreva os seguintes números na forma natural:

      a) 0,3800456 10 2;

      b) 0,245 10 -3;

      c) 1,256900E+5;

      d) 9.569120E-3.

  7. Escreva o número 2010.0102 10 como cinco de várias maneiras em forma normal.
  8. Escreva os seguintes números na forma normal com uma mantissa normalizada - uma fração própria que possui um dígito diferente de zero após a vírgula decimal:

    a) 217.934 10;

    c) 0,00101 10.

  9. Desenhe um diagrama conectando os conceitos básicos discutidos neste parágrafo.

Existem dois formatos principais para representar números na memória do computador, um deles é usado para codificar inteiros (representação de ponto fixo de um número), o segundo é usado para especificar um determinado subconjunto de números reais (representação de ponto flutuante de um número). ). Vejamos cada um dos formatos com mais detalhes.

1.1. Representação inteira

Qualquer número inteiro pode ser considerado um número real, mas com parte fracionária zero, ou seja, pode-se limitar-se à representação de números reais em um computador e à implementação de operações aritméticas sobre eles, mas para o uso eficiente da memória do computador, aumentando a velocidade dos cálculos e introduzindo a operação de divisão inteira. Os inteiros são representados de maneiras especialmente projetadas.

Para representação computacional de inteiros, geralmente são usados ​​​​vários métodos diferentes, diferindo entre si no número de dígitos binários e na presença ou ausência de um dígito de sinal.

Os números inteiros em um computador são armazenados na memória no formato c. ponto fixo. Neste caso, cada dígito de uma célula de memória corresponde sempre ao mesmo dígito, e a “vírgula” é “localizada” à direita após o dígito menos significativo, ou seja, fora da grade de bits.

1.1.1. Inteiros não assinados

Vamos considerar a codificação de inteiros sem sinal usando o exemplo do tipo de dados byte em idioma Básico E não assinado personagem em idioma COM++, ocupando um byte na memória.

Para obter uma representação computacional (interna) de um número inteiro não negativo de um byte, basta convertê-lo para o sistema numérico binário e o resultado resultante, denominado código direto do número, ser preenchido à esquerda com zeros até oito bits.

O número mínimo é representado por zeros em todos os dígitos e é igual a zero. O número máximo representável corresponde a unidades em todos os dígitos da célula (um número binário composto por oito unidades é igual a 255 (). Exemplos de codificação de inteiros não assinados de byte único são fornecidos na Tabela. 1.

Inteiros não negativos de byte único podem ser usados, por exemplo, para organizar vários contadores, registrar endereços de células, data e hora e o tamanho de imagens gráficas em pixels.

Para melhorar a legibilidade da representação interna de um número, ele é escrito no sistema numérico hexadecimal.

Tabela 1

Exemplos de codificação de inteiros sem sinal

1.1.2. Inteiros assinados

Vamos considerar a codificação de números inteiros assinados usando o exemplo do tipo de dados inteiro em idioma Básico E interno em idioma COM++, ocupando dois bytes (16 bits) na memória.

Cada um dos 16 bits tem uma finalidade específica. A forma de representação de um inteiro assinado é mostrada na Fig. 1. O sinal é atribuído ao dígito mais significativo da célula: 0 – para números positivos, 1 – para números negativos.

Para representar inteiros assinados em um computador, é utilizado um código adicional, que permite substituir a operação aritmética de subtração por uma operação de adição, o que aumenta significativamente a velocidade dos cálculos.

Para entender o que é código complementar, vejamos os códigos direto e reverso.

Nota 1. Para números positivos, todos os três códigos coincidem com a representação binária do número usando dezesseis dígitos binários, com zeros escritos nos dígitos vazios.

Arroz. 1. Formulário inteiro assinado

Vamos imaginar algoritmo obter um código binário adicional de dezesseis bits de um número negativo.

1) Escreva o código direto de um número negativo em 16 dígitos binários. Para isso, o módulo de um inteiro negativo deve ser convertido para o sistema numérico binário e o resultado resultante deve ser complementado à esquerda com zeros de até 16 bits.

2) Escreva o código reverso de um número negativo em 16 dígitos binários. Para fazer isso, inverta os valores de todos os bits do código direto (substitua todos os zeros por uns e todos os uns por zeros).

3) Escreva o código adicional de um número negativo em 16 dígitos binários. Para fazer isso, adicione um ao código reverso, considerado um número binário não negativo de dezesseis bits.

Nota 2. O código recíproco de um número negativo é o módulo do complemento desse número ao número
, e o código adicional depende do número
.

Exemplos de representação de inteiros assinados de dois bytes são fornecidos na Tabela. 2.

O menor número negativo que pode ser representado usando dois bytes é –32768.

O número positivo representável máximo corresponde a uns em todos os bits da célula (um número binário composto por zero (no bit de sinal) e quinze unidades), é igual a 32767 (
).

Tabela 2

Exemplos de representação de inteiros assinados de dois bytes

§ 1.2. Representando números em um computador

Representando números em um computador. Perguntas e tarefas

1. Leia os materiais de apresentação do parágrafo contido no apêndice eletrônico do livro didático. Use esses materiais ao preparar respostas a perguntas e concluir tarefas.

2. Como os números inteiros positivos e negativos são representados na memória do computador?

3. Qualquer número inteiro pode ser considerado um número real, mas com parte fracionária zero. Justifique a viabilidade de ter formas especiais de representação computacional de inteiros.

4. Represente o número 63 10 em formato não assinado de 8 bits.

5. Encontre os equivalentes decimais dos números usando seus códigos diretos, escritos em formato assinado de 8 bits:

    a) 01001100;
    b) 00010101.

6. Qual dos números 443 8, 101010 2, 256 10 pode ser armazenado no formato de 8 bits?

7. Escreva os seguintes números na forma natural:

    a) 0,3800456 10 2;
    b) 0,245 10 -3;
    a) 1,256900E+5;
    a) 9.569120E-3.

8. Escreva o número 2010.0102 10 de cinco maneiras diferentes na forma exponencial.

9. Escreva os seguintes números na forma exponencial com uma mantissa normalizada - uma fração própria que possui um dígito diferente de zero após a vírgula decimal:

    a) 217.934 10;
    b) 75321 10;
    c) 0,00101 10.

10. Desenhe um diagrama conectando os conceitos básicos discutidos neste parágrafo.

Respostas: Representação de números em um computador

    9. a) 0,217934 10 3 ; b) 0,75321 10 5; c) 0,101 10 -2.

© 2024 ermake.ru - Sobre reparo de PC - Portal de informações