elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Los 10 CVE más críticos (peligrosos) de 2020


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Modificar valor
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: 1 [2] 3 Ir Abajo Respuesta Imprimir
Autor Tema: Modificar valor  (Leído 7,372 veces)
Choke1

Desconectado Desconectado

Mensajes: 38


Ver Perfil
Re: Modificar valor
« Respuesta #10 en: 6 Marzo 2015, 18:09 pm »

gracias por la ayuda y la paciencia.

Mira esto quiero que me saga:

Todos los bits del pixel puestos a 0
+----------------+----------------+----------------+----------------+
| ALFA | ROJO | VERDE | AZUL |
+----------------+----------------+----------------+----------------+
| 0 0 0 0 0 0 0 0| 0 0 0 0 0 0 0 0| 0 0 0 0 0 0 0 0| 0 0 0 0 0 0 0 0|

Poner a 1 el bit menos significativo del canal Alfa (bit 24)
+----------------+----------------+----------------+----------------+
| ALFA | ROJO | VERDE | AZUL |
+----------------+----------------+----------------+----------------+
| 0 0 0 0 0 0 0 1| 0 0 0 0 0 0 0 0| 0 0 0 0 0 0 0 0| 0 0 0 0 0 0 0 0|

poner solo el bit8 a con valor 1


En línea

ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: Modificar valor
« Respuesta #11 en: 6 Marzo 2015, 18:14 pm »

Pues b.bit7.

En cualquier caso, no te recomendaría usar esa union. Si quieres poner a 1 un bit, basta hacer:

Código
  1. num = num | 0b00000001;

En ese ejemplo, si num es un char, 8 bits, le pondría el primer bit a 1.

Aplica operaciones binarias a nivel de bit: AND &, OR |, XOR ^.


En línea

Choke1

Desconectado Desconectado

Mensajes: 38


Ver Perfil
Re: Modificar valor
« Respuesta #12 en: 6 Marzo 2015, 18:35 pm »

Nada sigo sin conseguirlo XD, me obligan a usar esa union.
En línea

ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: Modificar valor
« Respuesta #13 en: 6 Marzo 2015, 18:38 pm »

Pon el fragmento de código, entre las etiquetas GeSHi, para que lo vea.
En línea

Choke1

Desconectado Desconectado

Mensajes: 38


Ver Perfil
Re: Modificar valor
« Respuesta #14 en: 6 Marzo 2015, 18:42 pm »

Código
  1.  
  2.  
  3. typedef struct TreintaydosBits {
  4.    unsigned bit0 : 1;
  5.    unsigned bit1 : 1;
  6.    unsigned bit2 : 1;
  7.    unsigned bit3 : 1;
  8.    unsigned bit4 : 1;
  9.    unsigned bit5 : 1;
  10.    unsigned bit6 : 1;
  11.    unsigned bit7 : 1;
  12.    unsigned bit8 : 1;
  13.    unsigned bit9 : 1;
  14.    unsigned bit10 : 1;
  15.    unsigned bit11 : 1;
  16.    unsigned bit12 : 1;
  17.    unsigned bit13 : 1;
  18.    unsigned bit14 : 1;
  19.    unsigned bit15 : 1;
  20.    unsigned bit16 : 1;
  21.    unsigned bit17 : 1;
  22.    unsigned bit18 : 1;
  23.    unsigned bit19 : 1;
  24.    unsigned bit20 : 1;
  25.    unsigned bit21 : 1;
  26.    unsigned bit22 : 1;
  27.    unsigned bit23 : 1;
  28.    unsigned bit24 : 1;
  29.    unsigned bit25 : 1;
  30.    unsigned bit26 : 1;
  31.    unsigned bit27 : 1;
  32.    unsigned bit28 : 1;
  33.    unsigned bit29 : 1;
  34.    unsigned bit30 : 1;
  35.    unsigned bit31 : 1;
  36. } TreintaydosBits;
  37.  
  38. typedef union CuatroBytes {
  39.    long n;
  40.    TreintaydosBits b;
  41. } CuatroBytes;
  42.  
  43. /**----- Prototipos -----**/
  44. void ImprimeBitsdePixel(long);
  45.  
  46. int main(int argc, char** argv) {
  47.  
  48.    CuatroBytes pixel;
  49.    // Todos los bits del pixel los ponemos a cero
  50.  
  51.    pixel.n = 0;
  52.  
  53.    printf("\nTodos los bits del pixel puestos a 0\n");
  54.    ImprimeBitsdePixel(pixel.n);
  55.    printf("\n");
  56.    pixel.b.bit10 = 1;
  57.    printf("\nPoner a 1 el bit menos significativo del canal Alfa (bit 24)\n");
  58.    ImprimeBitsdePixel(pixel.n);
  59.  
  60.    return (EXIT_SUCCESS);
  61. }
  62.  
  63. void ImprimeBitsdePixel(long nump) {
  64.  
  65.    int i;
  66.  
  67.    printf("\n+----------------+----------------+----------------+----------------+\n"
  68.            "|      ALFA      |      ROJO      |      VERDE     |      AZUL      |\n"
  69.            "+----------------+----------------+----------------+----------------+\n");
  70.    for (i = 0; i < 32; i++) {
  71.        printf("%ld ", nump);
  72.  
  73.        if (i == 7 || i == 15 || i == 23) {
  74.            printf("  ");
  75.        }
  76.    }
  77.  
  78. }
  79.  
En línea

ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: Modificar valor
« Respuesta #15 en: 6 Marzo 2015, 18:48 pm »

En el printf de la función estás imprimiendo el número entero.

Código
  1. if(nump&(1<<i))
  2.    printf("1 ");
  3. else
  4.    printf("0 ");

Así imprimes solo cada bit.
En línea

Choke1

Desconectado Desconectado

Mensajes: 38


Ver Perfil
Re: Modificar valor
« Respuesta #16 en: 6 Marzo 2015, 18:51 pm »

Muchas Gracias!! Te has ganado el cielo jeje  ;-)

En línea

Choke1

Desconectado Desconectado

Mensajes: 38


Ver Perfil
Re: Modificar valor
« Respuesta #17 en: 6 Marzo 2015, 18:59 pm »

Y si xj quiero cambiar 8 tengo que cambiarlo de uno  a uno, xj asi:


pixel.b.bit8 = 1;
pixel.b.bit9 = 1;
pixel.b.bit10 = 1;
pixel.b.bit11 = 1;
...

O existe alguna manera menos chapuzera?
En línea

ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: Modificar valor
« Respuesta #18 en: 6 Marzo 2015, 19:13 pm »

La forma correcta sería la que puse antes, con operadores binarios. Pero decías que no te dejaban :o
En línea

Choke1

Desconectado Desconectado

Mensajes: 38


Ver Perfil
Re: Modificar valor
« Respuesta #19 en: 7 Marzo 2015, 10:54 am »

Por cierto que significa la condicion esa: if(nump&(1<<i))
En línea

Páginas: 1 [2] 3 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Modificar Valor a DWORD en el registro
Programación Visual Basic
Ch3ck 1 4,660 Último mensaje 6 Septiembre 2007, 03:55 am
por APOKLIPTICO
Modificar un valor con Ollydbg
Ingeniería Inversa
pepecuervo 1 3,087 Último mensaje 3 Diciembre 2012, 18:24 pm
por karmany
Modificar el valor ram (4,00 GB) a (32,00) en propiedades del equipo
Software
Loqui86 6 6,798 Último mensaje 21 Diciembre 2012, 13:25 pm
por WHK
Modificar valor checkbox
Desarrollo Web
mapers 3 4,354 Último mensaje 21 Diciembre 2013, 02:29 am
por #!drvy
Cheat Engine no permite modificar el campo VALUE de los registros encontrados
Juegos y Consolas
nolose 1 9,212 Último mensaje 7 Diciembre 2017, 00:40 am
por Darreptor
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines