Autor Tema: C# Ejercicio resuelto Cambiar las posiciones de unos bits con otros de un número  (Leído 2029 veces)

Dimitar Stefanov

  • Experto
  • *****
  • Mensajes: 598
    • Ver Perfil
Ejercicio:

Citar
Write a program that exchanges bits 3, 4 and 5 with bits 24, 25 and 26 of given 32-bit unsigned integer(read from the console).

El código:

Código: [Seleccionar]
using System;

class Program {
static void Main() {
long num;
Console.Write("Introduce un número entero positivo desde 0 a 67108863: ");
num = long.Parse(Console.ReadLine());
Console.WriteLine("El número introducido es: "+num+" y en formato binario es: "+Convert.ToString(num, 2));
long posicion3 = 1 << 3;
posicion3 = num & posicion3;
posicion3 = posicion3 >> 3;

long posicion4 = 1 << 4;
posicion4 = num & posicion4;
posicion4 = posicion4 >> 4;

long posicion5 = 1 << 5;
posicion5 = num & posicion5;
posicion5 = posicion5 >> 5;

long posicion24 = 1 << 24;
posicion24 = num & posicion24;
posicion24 = posicion24 >> 24;

long posicion25 = 1 << 25;
posicion25 = num & posicion25;
posicion25 = posicion25 >> 25;

long posicion26 = 1 << 26;
posicion26 = num & posicion26;
posicion26 = posicion26 >> 26;

if(posicion3 != posicion24) {
if(posicion3 == 0) {
posicion3 = ~(1 << 24);
num = num & posicion3;
}else {
posicion3 = 1 << 24;
num = num | posicion3;
}
if(posicion24 == 0) {
posicion24 = ~(1 << 3);
num = num & posicion24;
}else {
posicion24 = 1 << 3;
num = num | posicion24;
}
}

if(posicion4 != posicion25) {
if(posicion4 == 0) {
posicion4 = ~(1 << 25);
num = num & posicion4;
}else {
posicion4 = 1 << 25;
num = num | posicion4;
}
if(posicion25 == 0) {
posicion25 = ~(1 << 4);
num = num & posicion25;
}else {
posicion25 = 1 << 4;
num = num | posicion25;
}
}

if(posicion5 != posicion26) {
if(posicion5 == 0) {
posicion5 = ~(1 << 26);
num = num & posicion5;
}else {
posicion5 = 1 << 26;
num = num | posicion5;
}
if(posicion26 == 0) {
posicion26 = ~(1 << 5);
num = num & posicion26;
}else {
posicion26 = 1 << 5;
num = num | posicion26;
}
}

Console.WriteLine("El número cambiado es: "+num+" y en forma binaria es: "+Convert.ToString(num, 2));
}
}

Saludos.
« Última modificación: 20 de Julio 2016, 12:56 por César Krall »

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".