« en: 18 de Julio 2016, 20:59 »
Ejercicio:
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:
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 »

En línea