Excess notation binary options


Eu li: Como um int não assinado, mas oset por (2 (n1) 1), onde n é o número de bits no numeral. Além: Tecnicamente, poderíamos escolher qualquer tendência que quisermos, mas a escolha apresentada aqui é extraordinariamente comum. - inst. eecs. berkeley. edu/ No entanto, eu não entendo qual é o ponto. Alguém pode explicar isso para mim com exemplos Também, quando devo usá-lo, dado outras opções como elogio, sinal e mag, e twos elogio perguntou Jul 14 14 at 3:57 Uma representação é uma forma de codificar informações para que seja fácil Para extrair detalhes ou inferências da informação codificada. A maioria das CPUs modernas representa números usando a notação de complemento de dois. Eles fazem isso porque é fácil de projetar circuitos digitais que podem fazer o que equivale a aritmética sobre esses valores rapidamente (adicionar, subtrair, multiplicar, dividir). Twos complemento também tem a propriedade agradável que se pode interpretar o bit mais significativo como um poder-de-dois (dando números não assinados) ou como um bit de sinal (dando números assinados) sem alterar essencialmente qualquer hardware usado para implementar a aritmética . As máquinas mais antigas usaram outras bases, por exemplo, bastante comuns na década de 60, eram máquinas que representavam números como conjuntos de dígitos decimais codificados em binários presos em bitlets endereçáveis ​​de 4 bits (os IBM 1620 e 1401 são exemplos disso). Assim, você pode representar esse mesmo conceito ou valor diferentes maneiras. Um viés apenas significa que qualquer representação que você escolheu (para números), você adicionou um viés constante a esse valor. Presumivelmente, isso é feito para permitir que algo seja feito de forma mais eficaz. Eu não posso falar com (2 (n1) 1) sendo um extraordinairey comum (viés) eu faço montes de montagem e codificação C e bastante não encontrar uma necessidade de valores de viés. No entanto, há um exemplo comum. Os CPUs modernos implementam em grande parte o ponto flutuante IEEE, que armazena números de ponto flutuante com sinal, expoente, mantissa. O expoente é é potência de dois, simétrica em torno de zero, mas tendenciosa por 2 (N-1) se bem me lembro, para um expoente N-bit. Esse viés permite que valores de ponto flutuante com o mesmo sinal sejam comparados para igual / menor / maior usando as instruções de complemento de duas máquinas padrão, em vez de uma instrução de ponto flutuante especial, o que significa que, às vezes, é possível evitar comparações de ponto flutuante. (Veja cygnus-software / papers / comparingfloats / comparingfloats. htm para detalhes de canto escuro). Agradecimentos a PotatoSwatter para notar a imprecisão de minha resposta inicial aqui, e fazendo-me ir escavar isto para fora. Respondida Jul 14 14 at 4:18 Notação tendenciosa é uma maneira de armazenar uma gama de valores que não começa com zero. Simplificando, você toma uma representação existente que vai de zero a N e, em seguida, adiciona um viés B a cada número, de modo que agora passa de B para NB. Expositores de ponto flutuante são armazenados com um viés para manter o intervalo dinâmico do tipo centralizado em 1. Excesso de três codificação é uma técnica para simplificar a aritmética decimal usando um viés de três. Twos complementar notação poderia ser considerada como preconceituosa notação com um viés de INTMIN eo mais significativo bit invertido. (Olhando para calcular com números binários Experimente a minha calculadora binária.) (Olhando para converter números entre bases arbitrárias Experimente o conversor base). Sobre o Conversor Decimal / Binário Este é um conversor decimal para binário e binário para decimal. It8217s diferente da maioria dos conversores decimais / binários, como calculadora do Google ou calculadora do Windows, porque: Ele pode converter valores fracionários, bem como valores inteiros. Ele pode converter números muito grandes e muito pequenos 8212 até centenas de dígitos. Os números decimais são convertidos para ldquopurerdquo números binários, não para formatos de número de computador como complemento two8217s ou binário de ponto flutuante IEEE. A conversão é implementada com aritmética de precisão arbitrária. Que dá ao conversor a sua capacidade de converter números maiores do que aqueles que podem caber em tamanhos padrão palavra computador (como 32 ou 64 bits). Como usar o conversor decimal / binário Digite um número positivo ou negativo sem vírgulas ou espaços, não expresso como uma fração ou cálculo aritmético e não em notação científica. Os valores fracionários são indicados com um ponto de raiz (lsquo. rsquo, not lsquo, rsquo) Alterar o número de bits que deseja exibir no resultado binário, se diferente do padrão (aplica-se somente ao converter um valor decimal fracionário). Clique em lsquoConvertrsquo para converter. Clique em lsquoClearrsquo para redefinir o formulário e começar do zero. Se você quiser converter outro número, basta digitar sobre o número original e clicar em lsquoConvertrsquo 8212 não é necessário clicar primeiro em lsquoClearrsquo. Além do resultado convertido, o número de dígitos no número original e no número convertido é exibido. Por exemplo, ao converter o decimal 43.125 para o binário 101011.001, o número de dígitos é exibido como lsquo2.3 a 6.3rsquo. Isso significa que a entrada decimal tem 2 dígitos em sua parte inteira e 3 dígitos em sua parte fracionária, ea saída binária tem 6 dígitos em sua parte inteira e 3 dígitos em sua parte fracionária. Os valores decimais fracionários que são díadicos convertem em valores binários fracionários finitos e são exibidos com precisão total. Os valores decimais fraccionados que não são díadicos são convertidos em valores binários fracionários infinitos (repetidos), que são truncados 8212 não arredondados a 8212 para o número especificado de bits. Neste caso, uma elipse (8230) é anexada ao final do número binário, eo número de dígitos fracionários é anotado como infinito com o símbolo lsquo8734rsquo. Explorando propriedades de conversão decimal / binário O conversor é configurado para que você possa explorar propriedades de decimal para binário e conversão de binário para decimal. Você pode copiar a saída do conversor decimal para binário para a entrada do conversor binário para decimal e comparar os resultados (certifique-se de não copiar a parte lsquo8230rsquo do número 8212 o conversor binário irá sinalizá-lo como inválido.) Um inteiro decimal Ou o valor fracionário diádico convertido em binário e depois de volta para decimal corresponde ao valor decimal original um valor não-diádico converte de volta apenas para uma aproximação do seu valor decimal original. Por exemplo, 0,1 em decimal 8212 a 20 bits 8212 é 0,00011001100110011001 em binário 0,00011001100110011001 em binário é 0,09999942779541015625 em decimal. Aumentar o número de bits de precisão tornará o número convertido mais próximo do original. Você pode estudar como o número de dígitos difere entre as representações decimais e binárias de um número. Grandes inteiros binários têm cerca de log 2 (10), ou aproximadamente 3.3, vezes como muitos dígitos como seus equivalentes decimais. As frações decimais diádicas têm o mesmo número de dígitos que seus equivalentes binários. Os valores decimais não-diádicos, como já mencionado, têm equivalentes binários infinitos. Outros Conversores de Valor Fracionário de Precisão ArbitráriaNow o número binário pode ser construído pela leitura da terceira coluna de baixo para cima que dá 10011011. 2.2.4.3 Conversão de Binário para Hexadecimal A conversão de binário para hexadecimal é bastante simples. Primeiro verifique se o número de bits é divisível por quatro. Se não for adicionar o número necessário de 0s na frente. Os zeros iniciais não alteram o valor. Por exemplo Agora divida o número binário em grupos de quatro bits Agora podemos usar a Figura 2.8 para completar o processo, substituindo para cada grupo de quatro dígitos binários um dígito hexadecimal. O resultado é 2.2.4.4 Conversão de Hexadecimal para Binário A conversão de hexadecimal para binário é tão simples. Considere o número hexadecimal Usando a Figura 2.8 isso se torna E 1 9 C 1110 0001 1001 1100 2.2.5 Adição Binária A maioria das unidades aritméticas lógicas suporta todas as operações aritméticas inteiras padrão diretamente no hardware. As máquinas mais poderosas também incluirão operações em ponto flutuante ou número real em hardware. Os números de ponto flutuante serão discutidos na próxima seção. As funções matemáticas padrão incluem adição, subtração, multiplicação e divisão. Em vez de um tratamento completo dessas operações, vamos nos concentrar nas duas operações mais importantes, as de adição e subtração com uma breve discussão sobre a multiplicação. Ao analisar os detalhes de um despejo de memória, adição e subtração são as únicas operações necessárias. Se você analisar de perto a maneira como você realiza a adição no sistema de número decimal, cada vez que você adiciona uma coluna de dois números, você trabalha com três entradas, o primeiro dígito, o segundo dígito eo carry da coluna anterior. Por exemplo, quando você está adicionando o 5 e 7, há um 1 para levar a partir da coluna anterior. Para encontrar o resultado, todos nós memorizamos uma tabela 10 por 10 chamada tabela de adição porque em decimal cada dígito pode ter um de dez valores diferentes (veja a Figura 2.9). O resultado consiste realmente de dois valores a 3 da adição, e um 1 para levar na próxima coluna. As operações análogas são feitas em binário, exceto que cada entrada pode ter apenas dois valores diferentes, 0 ou 1 (ver Figura 2.10). Se temos três entradas, existem 8 combinações possíveis. Temos também duas saídas o valor da adição para essa coluna específica eo valor de carry para a próxima coluna. A Figura 2.11 é uma representação tabular das diferentes possibilidades. Isso provavelmente soa mais confuso do que realmente é. Vamos considerar alguns exemplos para esclarecer as operações. Considere primeiro o problema discutido acima: Em binário isso seria Agora, uma vez que o bit de chumbo é 1, a resposta é interpretada como um número negativo em dois complementam a forma. Para encontrar o valor, tomamos o complemento de dois e atribuímos um sinal de menos 2.2.8 Multiplicação binária Consideraremos brevemente a multiplicação binária inteira. A multiplicação de dois números no sistema binário é particularmente simples. A divisão é mais complexa e vamos adiar isso para textos mais detalhados e avançados. A multiplicação binária é análoga à multiplicação decimal mais familiar. Considere a multiplicação de 13 x 19 Para um dígito na linha 2, multiplicamos o número na linha 1 e entramos o resultado abaixo deslocado pelo número apropriado de posições. A linha 3 é o resultado de 3 x 19 ea linha 4 é o resultado de 1 x 19 com uma mudança de 1 posição. A linha 5 representa a soma das multiplicações individuais. Se a linha 2 tivesse mais dígitos, a soma teria sido sobre mais linhas. No binário executamos as mesmas funções, mas como o multiplicador só pode ser 0 ou 1, simplesmente adicionamos um 0 ou adicionamos o multiplicando deslocado pelo número apropriado de posições. (Recorde a multiplicação por uma é a operação da identidade para a multiplicação.) A única diferença é que nós adicionamos após cada multiplicação dos dígitos que dá forma a uma série de somas parciais. Para ajudar a esclarecer o procedimento vamos considerar o mesmo problema em binário. 10001 1 soma 1 linha 3 10011 soma 2 linha 5 1011111 soma 3 linha 7 11110111 soma 4 linha 9 11110111 soma 5 linha 11 Convertendo 11110111 volta a decimal dá a mesma resposta de 247. Para entender melhor este processo vamos discutir cada linha separadamente linha 1 linha multiplicadora 2 linha multiplicadora 3 multiplicação pelo bit 2 0 com valor 1 dando a primeira linha de soma parcial 4 multiplicação pelo 2 1 bit com valor 0 dando zero linha de resultado 5 segundo soma parcial linha 3 linha 4 linha 6 multiplicação por A 2 2 bits com valor 1 linha 7 terceira soma parcial (linha 5 linha 6) linha 8 multiplicação pelo 2 3 bit com valor 1 linha 9 quarto somatório parcial (linha 7 linha 8) linha 10 multiplicação pelo 2 4 bit com valor 0 dando zero resultado linha 11 quinto parcial soma (linha 9 linha 10). Esta é a resposta final Uma inspeção mais detalhada do processo de multiplicação binária mostra que as linhas 1, 6 e 8 são todas do mesmo padrão de bits que é simplesmente o multiplicando deslocado o número apropriado de posições para a esquerda. As linhas 4 e 10 são enchimentos para os bits zero no multiplicador. Todo o processo de multiplicação binária é simplesmente uma série de (1) teste booleano de deslocamento (2) para ver se o bit multiplicador é 0 ou 1 e (3) adicionar à soma parcial se o bit é 1. Como você poderia esperar, esta lógica É fácil de implementar em hardware. 2.2.9 Números reais de ponto flutuante Na seção 2.2.2.2 discutimos brevemente a representação de números que tinham uma parte fracionária como 19.75 e como o ponto decimal familiar tinha uma contrapartida semelhante no sistema binário chamado ponto binário. Na verdade, poderíamos representar no sistema binário. Os dígitos à direita do ponto binário representam 2 -1 1/2 0,5 e 2 -2 1/4 0,25 respectivamente. Estes números são por vezes referidos como números reais. Os números inteiros são um caso especial de reais com nenhuma parte fracionária. Em muitas aplicações, é importante ser capaz de representar números reais no computador. Muitos esquemas diferentes são possíveis, mas praticamente todos usam um conceito de flutuar o ponto binário para uma posição específica. É mais fácil entender esse conceito com o exemplo. Considere os números 345.75 e - 0.03125 Estes dois números poderiam ser escritos em uma forma equivalente usando notação científica como 0.34575 x 10 3 e - 0.31250 x 10 -1 onde escolhemos ter o primeiro dígito diferente de zero à direita do ponto decimal. Outra forma poderia ser 3.4575 x 10 2 - 3.1250 x 10 -2 onde escolhemos ter o primeiro dígito diferente de zero à esquerda do ponto decimal. Estas duas convenções são dois exemplos de normalização onde fixamos a representação da mantissa e flutuamos o ponto decimal. Os dígitos 34575 e 31250 são conhecidos como mantissa ou parte fracionária e as potências de dez, no primeiro caso, são conhecidas como as partes características ou exponentes. É importante observar que há quatro partes distintas de informação em cada número 1. o sinal da mantissa 2. os dígitos que compõem a mantissa 3. o sinal da característica 4. os dígitos que compõem a característica. Devem ser feitas várias observações. Em todos os sistemas, um número fixo de bits é usado para representar o número real. Quanto mais bits usados ​​na mantissa, mais preciso o número pode ser representado. Por outro lado, quanto mais bits forem utilizados para o expoente ou característica, maior será o intervalo de números de muito pequeno a muito grande que pode ser representado. Com um número fixo de bits, há uma compensação óbvia entre precisão e alcance. Quando representamos esses números no computador, devemos primeiro adotar uma convenção. Ao contrário dos dados de caracteres e números inteiros, não existe um padrão uniforme. Cada convenção tem suas vantagens e desvantagens e compensações devem ser feitas ao projetar o computador. Vamos examinar brevemente duas técnicas diferentes, uma usada por mainframes IBM e um padrão IEEE que é usado pela maioria dos PCs e por minicomputadores Hewlett / Packard. 2.2.9.1 Convenção de ponto flutuante Mainframe IBM A primeira convenção conhecida como base 64 de excesso (ou viés) é usada pela série mainframe IBM de computadores, como IBM 370 e IBM 4341. O tamanho padrão da palavra é 32 bits e é dividido em Três partes 0 1234567 890123456789012345678901 onde os bits são numerados de 0 a 31. O primeiro bit (bit 0) representa o sinal da mantissa. Os bits 8 a 31 representam os dígitos da mantissa. Os bits 1 a 7 representam tanto o sinal como os dígitos da característica. Um valor de 0 (isto é, sem deslocamentos na característica) é armazenado como 10000000 2 ou 2 7 64. Se houver um deslocamento positivo, é adicionado a este valor e um desvio negativo é subtraído. Desta forma a característica é sempre armazenada como um número positivo. Isto pode ser importante na concepção dos circuitos electrónicos da unidade lógica aritmética. Há mais uma convenção que é seguida como indicado pelo termo base 16. Cada valor na característica indica uma mudança de 4 posições ou uma vez que os deslocamentos estão sempre em unidades de quatro, a normalização é colocar o primeiro dígito binário diferente de zero em um Das quatro primeiras posições à direita do ponto binário. Uma declaração equivalente é dizer que o primeiro dígito hexadecimal à direita do ponto é diferente de zero. Para esclarecer essas idéias, consideraremos a conversão dos dois números decimais reais 345.75 e -0.03125 para a notação em excesso 64 base 16. Usando as técnicas discutidas anteriormente neste capítulo, em binário temos

Comments

Popular Posts