Autor Tema: Cómo obtener ciertos bits de un byte  (Leído 2721 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado badtzdizzy

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 234
Cómo obtener ciertos bits de un byte
« en: 08 de Junio de 2004, 19:08:00 »
Hola

Quisiera saber si existe alguna funcion que me ayude a obtener el bit más significativo y el menos significativo de un byte, por ejemplo, yo quiero obtener estos bits del numero 255. De antemano gracias por la informacion.

Desconectado Ginho_rj

  • PIC12
  • **
  • Mensajes: 87
RE: Cómo obtener ciertos bits de un byte
« Respuesta #1 en: 09 de Junio de 2004, 06:20:00 »
boolean msb,lsb;

msb=bit_test(variavel,7);

lsb=bit_test(variavel,0);

Desconectado badtzdizzy

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 234
RE: Cómo obtener ciertos bits de un byte
« Respuesta #2 en: 09 de Junio de 2004, 09:53:00 »
Entonces si yo quiero obtener esos bits de un numero menor, tengo que ejecutar una función diferente para cada una de las posiciones ?  O existe alguna otra forma de hacerlo.  Yo quiero obtener esos bits en un rango de valores de 0 a 255. De antemano gracias.

Desconectado Modulay

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 2651
RE: Cómo obtener ciertos bits de un byte
« Respuesta #3 en: 09 de Junio de 2004, 11:13:00 »
Esta cuentecilla vale para sacar el número de bits significativos de una variable,tenga la longitud que tenga:

                                 Log2(variable) = nº bits

Lo que no sé es si el ccs implementa logaritmos en base 2.
Supongo que si la trae implementada devolverá un real en la mayoría de los casos por lo que después tendrías que redondear hacia el menor entero más cercano.

Un saludo

 

Desconectado Ginho_rj

  • PIC12
  • **
  • Mensajes: 87
RE: Cómo obtener ciertos bits de un byte
« Respuesta #4 en: 10 de Junio de 2004, 07:51:00 »
ENTENDI QUE VOCE QUERIA O BIT MAIS SIGNIFICATIVO E O MENOS SIGNIFICATIVOS DE UM NUMERO DE 8 BITS(0 A 255),PARA OUTRA POSIÇÃO É SÓ TROCAR O "n"  ABAIXO:


boolean msb,lsb;

msb=bit_test(variavel,n);

lsb=bit_test(variavel,n);

NÃO ENTENDI SUA FUNÇÃO MODULAY,QUANTO AO LOG SERIA ASSIM:

Nº BITS=LOG10 VARIAVEL/LOG10 2

Desconectado Modulay

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 2651
RE: Cómo obtener ciertos bits de un byte
« Respuesta #5 en: 10 de Junio de 2004, 08:19:00 »
Mejor la opción de Ginho.Hace lo mismo que la q yo propuse,pero ccs la puede calcular sin problemas,cosa que no ocurre con logaritmos de base 2.Pero esta vez el redondeo hay que realizarlo hacia arriba,hacia el entero mayor más cercano.
Ginho,es fácil de entender,nos remitimos a la base en la que se trabaja,la binaria:
 
variable = 2^nº bits => log2(variable) = log2(2) * nº bits
=> log2(variable) = 1 * nº bits

Desconectado badtzdizzy

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 234
RE: Cómo obtener ciertos bits de un byte
« Respuesta #6 en: 10 de Junio de 2004, 10:26:00 »
Hola a todos

Pues ya revisando bien el programa tal vez me esté complicando las cosas, lo que yo necesito es obtener un dato y enviarlo al visual para graficarlo, ahora bien, yo les pregunté acerca de como se obtenían los bits mas y menos significativos para que al recibirlos en el visual pues yo los transformara en entero y así graficarlos.

Es mas, no se que tan factible sea que los mande con la función printf y no con putc que es la que estoy usando. De antemano gracias por la ayuda.


 

anything