binário e decimal são duas formas diferentes para representar números inteiros. Na programação C, números binários são normalmente armazenados em cadeias de caracteres ou algum outro tipo de matriz. As cadeias de caracteres em C são nomeados por um ponteiro de caracteres que aponta para o bit de baixa ordem da seqüência binária . A seqüência termina com o personagem C especial " \\ 0" após o bit de ordem alta . Convertendo essas strings binários no valor inteiro equivalente é um programa simples de escrever - ou de forma iterativa ou recursiva. Instruções
1
Desenvolver um algoritmo claro para a conversão antes de começar a escrever o código. Você vai precisar de duas variáveis para o algoritmo : um acumulador para acompanhar os resultados e uma variável "poder" para acompanhar o aumento da potência de 2 que descreve as diferentes posições de bits do número binário. Por exemplo , o número inteiro 13 é armazenado no sistema binário como 1101. Este número é , na verdade, ( 1 X 2 ^ 3 ) + (1 x 2 ^ 2 ) + ( 2 ^ 0 x 1 ) + (1 x 2 ^ 0 ) ou 8 + 4 + 0 + 1 = 13 . Devido à forma como dígitos binários são armazenados em C, que vai começar no fim pouco baixo e multiplicando cada bit pelos valores crescentes da variável poder e adicioná-lo para o acumulador .
2
Descreva a função em pseudocódigo , testar o pseudocódigo com alguns exemplos , ajuste o pseudocódigo se necessário, e escrever o código C diretamente do pseudocódigo . Nome da função : binary2integer . Entrada : um ponteiro para um tipo de personagem . Saída de um número inteiro . Inicie a função através da definição de duas variáveis inteiras : acc - um acumulador e prisioneiro de guerra - um valor que duplica a cada passo na conversão. Definir acc a 0 e pow a 1. Continue fazendo as três instruções no loop até que o ponteiro está apontando para o caractere " \\ 0" , em seguida, retornar o valor da acc como o valor da função. As três instruções de loop são: Se o ponteiro está apontando para um "1", adicionar o valor de pow a acc , o dobro do valor de pow e incrementar o ponteiro para apontar para o próximo bit
. 3
Converter o pseudocódigo em código C : int binary2integer (char * p) {int acc , prisioneiro de guerra ; acc = 0; pow = 1; while ( p * = '\\ 0' !) {if ( p * == '1 ') acc + = pow , pow * = 2; p + +} } retorno acc . Este código deve ser testado com vários exemplos . Não se esqueça de verificar a existência de valores de limite , como 0 e 1, bem como com uma variedade de valores como 11111 , 00000 , 10101 e 01010 .