| Ver tema anterior :: Ver siguiente tema | | Autor | Mensaje |
|---|
u83mm
Registrado: 20 Oct 2007 Mensajes: 11
| Publicado: 24/02/2008 5:04 am | | | Título: Duda capitulo 5 |
| Tengo una duda sobre este capítulo (de momento solo una) , conforme avance, seguro que salen más.
A ver, lo de que un byte puede tomar 256 valores diferentes (de 0 a 255), lo entiendo. Esto es debido a una parte de las matemáticas llamada "combinatoria", o sea, si cojemos 2 elementos (en este caso "0" y "1") y hacemos grupos de 8 (que son los bits que pueden contener un byte) y calculamos el número de variaciones diferentes que podemos hacer con repeticiones, el resultado es 256. Y eso que a mi las matemáticas no se me daban nada bien en mi época .
Lo que no entiendo es:
en el apartado de "Operadores de bits", cuando hace mención al operador "| (OR)", no entiendo por que el resultado del código:
| Cita: | #include <stdio.h>
int main() { printf( "El resultado de la operación 235 | 143 es: %i\n", 235 | 143 ); } |
es 239. ¿Me lo podeis explicar al detalle por favor? _________________ nada es como uno se lo imagina |
| | Volver arriba | |  | rir3760

Registrado: 01 Oct 2004 Mensajes: 7516 Ubicación: Mexico
| Publicado: 24/02/2008 8:32 am | | | Título: |
| El operador OR a nivel de bits lo que hace es lo siguiente:
1) Como es un operador binario este requiere de dos operandos, ambos deben ser de tipo entero (char, short, etc.).
2) Ambos operandos se consideran solo como un patron de bits, por ejemplo si tenemos los numeros 24 y 15 los patrones de bits serian:
| Código: | [...] 0001 1000 ==> 24 [...] 0000 1111 ==> 15
|
Por convencion cuando se presenta el patron de bits de un numero el bit menos significativo es el mas a la derecha y el bit mas significativo se coloca en el extremo opuesto (mas a la izquierda). En este caso "[...]" indica un numero extra de bits no determinado y que depende de la implementacion, por ejemplo en un SO de 16 bits como es MS-DOS el tipo int consiste de 16 bits mientras que en MS Windows y Linux lo usual son 32 bits.
En base a esos dos patrones de bits se genera un nuevo patron que es el resultado del operador OR: si uno de los bits (o ambos) de los operandos esta a uno el resultado es uno. Solo si ambos bits son cero el resultado es cero.
En el ejemplo el resultado de "24 | 15" es:
| Código: | [...] 0001 1000 ==> 24 [...] 0000 1111 ==> 15 --------------- [...] 0001 1111 ==> 31 |
Tambien te recomendaria que revisaras sitios (como math.com y similares) en caso de dudas con los operadores binarios AND, OR, XOR.
Un saludo _________________ C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly. -- Kernighan & Ritchie, The C programming language |
| | Volver arriba | |  | | |
| No puede crear mensajes No puede responder temas No puede editar sus mensajes No puede borrar sus mensajes No puede votar en encuestas
|
|
| |