positie laten lezen.

  • Onderwerp starter Onderwerp starter avo
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

avo

Gebruiker
Lid geworden
26 sep 2006
Berichten
35
Hey,

Voor school moet ik een applicatie maken, over wat we gezien hebben in de Computerarchitectuur van processors.

De invoer moet 8bits, 16bits of 32bits zijn.
De invoer van de bits worden onderverdeeld in pariteitbits, geheugenwoord en controlebits.

De pariteitbits is een macht van 2. de invoer van 8bits heeft: 4pariteitbits op plaats 8,4,2 en 1, maar hoe kan ik de positie van de invoer laten inlezen ?
Als de pariteitbit op plaats 8 is moet hij de bit weergeven wat op plaats 8 staat.
Als de pariteitbit op plaats 4 is moet hij de bit weergeven wat op plaats 4 staat.
.... tot plaats 1.
voorbeeld:
invoer: 10110110
pariteitbit op plaats 8 is 0
pariteitbit op plaats 4 is 1
pariteitbit op plaats 2 is 0
pariteitbit op plaats 1 is 1


mijn code:
Code:
    public class Log
    {
        public enum LogType
        {
            Info,
            Error
        }
        public static void log(LogType Type, string Berichtje)
        {
            switch (Type)
            {
                case LogType.Info:
                    Console.ForegroundColor = ConsoleColor.Green;
                    Console.Write("[INFO]: " + Berichtje + "\n");
                    Console.ResetColor();
                    break;
                case LogType.Error:
                    Console.ForegroundColor = ConsoleColor.Red;
                    Console.Write("[ERROR]: " + Berichtje);
                    Console.ResetColor();
                    break;
            }
        }
    }
    class Program
    {
        private static string Input;
        static void Main(string[] args)
        {
            Console.Title = "Hoofdstuk: CPU";
            Console.WriteLine("Input van de Bits alleen 8-bits, 16-bits, 32-bits:");
            Console.WriteLine("  12345678901234567890123456789012");
            Console.Write("- ");
            Input = Console.ReadLine();
            if (Input.Length == 16 || Input.Length == 8 || Input.Length == 32)
            {
                Console.WriteLine("\n");
                Log.log(Log.LogType.Info, "Bits: " + Input.Length);
                Controlebits();
                Geheugenwoord();
                Pariteitbits();
                Console.ReadLine();
            }
            else
            {
                Log.log(Log.LogType.Error, "Je moet 8-Bits of 16-Bits of 32-Bits ingeven.");
                Console.ReadLine();
            }
        }
        public static void Pariteitbits()
        {
            // Elke keer de bit delen door 2
            // wanneer de bit word gedeelt door 2 moet hij de bit weergeven. Die op de positie staat.
            for (int i = Input.Length; i >= 1; i /= 2)
            {
                Log.log(Log.LogType.Info, "Pariteitbits: Plaats " + i + " met bit ");
            }
        }
        private static int Teller = 0;
        public static int Controlebits()
        {
            // Elke keer delen door 2 tot het op 1 uitkomt.
            // elke keer als het deelt moet het opgeslagen worden en daarna + 1.
            for (int i = Input.Length; i >= 1; i/=2)
            {
                Teller++;
            }
            Log.log(Log.LogType.Info, "Controlebits: " + Teller);
            return Teller;
        }
        public static void Geheugenwoord()
        {
            // Lengte van de bits + controlebits. 
            int Totaal = Input.Length + Teller;
            Log.log(Log.LogType.Info, "Geheugenwoord: " + Totaal + " Bits");
        }
    }




Met vriendelijke groeten.
 
Dat stukje van de pariteitbits:

7MdHX.png


Is dat wat je bedoeld?
Hier de code(wel beetje aanpassen ofcourse):
PHP:
            string invoer = "10110110";
            for (int index = 8; index >= 1; index /= 2)
                Console.WriteLine(string.Format("pariteitbit op plaats {0} is {1}", index, invoer.Substring(index - 1, 1)));
            
            Console.Read();
 
Dit is ook eenvoudig op bit-niveau zelf te regelen door gebruik te maken van de 'bitwise and' operator: http://en.wikipedia.org/wiki/Bitwise_operation#AND

[cpp]
int n = Convert.ToInt32("10110110", 2);
int[] bitmask = { 128, 64, 16, 1 };

for (int i = bitmask.Length - 1; i >= 0; --i)
{
Console.WriteLine("Bit {0} = {1}", 1 << i, (n & bitmask) == 0 ? 0 : 1);
}
[/cpp]
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan