Pesquisar na Comunidade
Mostrando resultados para as tags ''hexadecimal''.
Encontrado 3 registros
-
não converte o codigo na hora de ir de binario para hexa ou etc #include <stdio.h> #include <math.h> #include <stdlib.h> #define SIZE 255 #define ALG 17 int number,opcao; // Esta função converte um número decimal para a base 2, 8 ou 16. // Recebe como parâmetro um número decimal (num_dec), e a base (base) cujo número será convertido. void decToBase(int num_dec, int base) { char resto[ALG] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'}, num_conv; int indx = 0; // Este loop realiza as operações de divisão. Os restos são guardados no vetor 'num_conv' while(num_dec > 0) { num_conv[indx] = resto[num_dec % base]; num_dec /= base; indx++; } // Exclui o caractere especial '\0' do final da string indx -= 1; // Utilizado para identificar a saída do programa switch(base) { case 2 : printf("BINÁŔIO: "); break; case 8 : printf("OCTAL: "); break; case 16 : printf("HEXADECIMAL: "); break; } // Inverte a string contida no vetor num_conv for(indx; indx >= 0; indx--) printf("%c", num_conv[indx]); printf("\n"); switch(opcao) { int num_salva; case 2: if(base=2) { for(indx; indx >= 0; indx--) { number+=num_conv[indx]; } } break; case 3: if(base=8) { for(indx; indx >= 0; indx--) { number+=num_conv[indx]; } } break; case 4: if(base=16) { for(indx; indx >= 0; indx--) { number+=num_conv[indx]; } } break; } } // Esta função permite converter um número na base 2, 8 ou 16 para a base decimal. // Recebe como parâmetro uma string (representação do número), e um número inteiro que // determina em qual base está o número do primeiro parâmetro. void baseToDec(char* num_base, int base) { int indx = 0, exp = 0, cont = 0, dec = 0, num = 0; // Este loop determina o tamanho da string while(num_base[cont] != '\0') { cont++; } // Neste loop, a string é percorrida de trás para frente. Cada caractere é convertido // em um número inteiro, multiplicado pela base elevada ao expoente (0..Comprimento da string) // e somado ao valor da variável 'dec', que recebe as somas sucessivas. for(exp, indx=(cont-1); exp < cont; exp++, indx--) { if(base == 16) { switch(num_base[indx]) { case 'A' : case 'a' : num = 10; break; case 'B' : case 'b' : num = 11; break; case 'C' : case 'c' : num = 12; break; case 'D' : case 'd' : num = 13; break; case 'E' : case 'e' : num = 14; break; case 'F' : case 'f' : num = 15; break; default : num = (int)num_base[indx] - (int)'0'; } } else num = (int)num_base[indx] - (int)'0'; // Aqui avalia se o usuário digitou um número válido ou não! if(num > (base-1) || num < 0) { printf("Você informou um número inválido!\n"); exit(0); } dec += num * pow(base, exp); } // O número convertido para decimal é exibido printf("DECIMAL: %d\n", dec); } // Função que imprime o menu da calculadora void menu(void) { printf("\nBEM-VINDO AO CONVERSOR DE BASES NUMÉRICAS\n"); printf("QUAL OPERAÇÃO DESEJA REALIZAR? \n"); printf("[ 1 ] DECIMAL -> BINARIO, OCTAL e HEXADECIMAL\n"); printf("[ 2 ] BINARIO -> DECIMAL, OCTAL e HEXADECIMAL\n"); printf("[ 3 ] OCTAL -> DECIMAL, BINARIO e HEXADECIMAL\n"); printf("[ 4 ] HEXADECIMAL -> DECIMAL, BINARIO, OCTAL\n"); printf("[ 0 ] SAIR\n"); } // Função que chama as funções correspondentes à opção escolhida void process_calc(int opt) { char str; switch(opt) { case 0 : printf("CALCULADORA ENCERRADA!\n"); exit(0); case 1 : printf("DECIMAL: "); scanf("%d", &number); decToBase(number, 2); decToBase(number, 8); decToBase(number, 16); break; case 2 : printf("BINÁRIO: "); scanf("%s", str); baseToDec(str, 2); decToBase(number, 8); decToBase(number, 16); break; case 3 : printf("OCTAL = "); scanf("%s", str,3); baseToDec(str, 8); decToBase(number, 2); decToBase(number, 16); break; case 4 : printf("HEXADECIMAL = "); scanf("%s", str); baseToDec(str, 16); decToBase(number, 2); decToBase(number, 8); break; default : printf("OPÇÃO NÃO PERMITIDA!\nTENTE NOVAMENTE\n"); break; } } int main(void) { menu(); printf("QUAL OPERAÇÃO DESEJA REALIZAR? "); scanf("%d", &opcao); process_calc(opcao); return 0; }
-
Ola pessoal, primeiro brigado a quem responder. Estou com duvidas neste exercicio ja pensei e pensei e não consigo chegar a resposta. O Exercicio é o seguinte: Escreva a função findsaw que procura, no inteiro value, a mais longa sequência de bits consecutivos com valores alternados. A função retorna apenas o índice do primeiro bit dessa sequência, sendo 0 o índice do bit de menor peso. No caso de haver mais do que uma resposta possível, deve ser retornada a que corresponder ao menor índice. Por exemplo, a chamada findsaw(0xEAEA476B) deve retornar 23. unsigned int findsaw(int value); OBS: eu fiz algumas coisas so que não estou a conseguir encontrar a "máscara" necessária para resolver o problema Abaixo Segue o que eu consegui fazer. [code] #include <stdio.h> unsigned int findsaw(int value); int main(){ printf("%d\n", findsaw(0x6)); return 0; } unsigned int findsaw(int value){ int count; int bigger; for(count = 0; value != 0; value >>= 1){ if((value & 01) || (value & 010)) count++; else if((value & 00) || (value & 011)){ if(count > bigger) bigger = count; count = 0; } bigger = count; } return bigger; } [/code] Ups sou novo neste forum e não consegui por o codigo bem desculpem pensava que tinha de usar [\code] mas não deu Penso que dá para entender de qualquer forma Obrigado desde já :)
-
Boa tarde galera! Seguinte, recebi o programa abaixo e tenho que fazer algumas alterações. Basicamente ele pega uma imagem e cria um hexadecimal pra cada pixel correspondente a cor. Estou aprendendo VB agora então meu conhecimento da linguagem e de programação orientada a objetos ainda é bem raso. No caso estou implementando um algoritmo RLE para reduzir a quantidade de dados exibidos, porém os primeiros valores sempre aparecem separados da soma total e não consigo fazer isso mudar. Se puderem dar umas dicas agradeço muito! Abaixo segue o código: OBS: n1 é uma variável que criei apenas para fazer a comparação. result é a variável que recebe as informações em hexadecimal dos pixels da imagem. O Textbox.2 é um texto qualquer, no caso 0x indicando que os dados estão em hexa e o Textbox.3 é o separador dos valores, no caso uma vírgula. result = Hex(result) If n1 = result Then counter = counter + 1 End If If n1 <> result And counter >= 2 Then counter = counter + 1 TextBox1.AppendText(counter & "@" & TextBox2.Text & n1 & TextBox3.Text) counter = 0 End If If n1 <> result And counter >= 1 < 2 Then TextBox1.AppendText(TextBox2.Text & result & TextBox3.Text) End If n1 = result
-
- hexadecimal
- conversão
-
(e %d mais)
Tags: