Bits (Datentypen, Variablen und Ausdrücke)
Wie viele Bits benötige ich, um 365 (bzw. 3, 9, 2000, 5000, 100 000) mögliche Werte zu
speichern?
Beispiel: Um 200 mögliche Werte zu speichern, benötigen wir 8 Bits, denn mit 7 Bits sind lediglich 128 Zustände möglich. Deshalb erhöht sich die Größenordnug auf 8 Bits, womit sich dann maximal 256 Zustände abspeichern lassen.
1 Kommentare
7 Lösung(en)
import java.util.Scanner;
/**
* Wie viele Bits benötige ich?
* @author Philipp Gressly (phi AT gressly DOT ch)
*/
public class WieVieleBits {
public static void main(String[] args) {
new WieVieleBits().top();
}
void top() {
long zustaende;
zustaende = lies("Anzahl Zustände, die zu modellieren sind");
int bits = berechneBits(zustaende);
ausgabe(zustaende, bits);
}
/**
* Berechnet die Anzahl der Bits, die nötig sind,
* um eine vorgegebene Anzahl Zustände zu codieren.
* Beispielsweise benötige ich 8 Bits, um 256
* Zustände zu modellieren, jedoch bereits 9 Bits,
* um 257 Zustände zu erfassen.
*/
int berechneBits(long zustaende) {
int bits = 0;
zustaende = zustaende - 1;
while(zustaende > 0) {
bits = bits + 1;
// Ganzzahldivision:
zustaende = zustaende / 2;
}
return bits;
}
void ausgabe(long zustaende, int bits) {
System.out.print("Für " + zustaende);
System.out.print(" Zustände braucht es ");
System.out.print(bits + " Bit");
if(bits != 1) {
System.out.print("s"); // Mehrzahl
}
System.out.println(".");
}
Scanner sc = new Scanner(System.in);
long lies(String frage) {
System.out.println(frage + ":");
return sc.nextLong();
}
} // end of class WieVieleBits
program Au1P4 (input, output);
type
tBit = 0..maxint;
tZustaende = 0..maxint;
var
Bit : tBit;
Zustaende : tZustaende;
begin
write('Zustaende: ');
readln(Zustaende);
Bit := 0;
Zustaende := Zustaende - 1;
repeat
Zustaende := Zustaende div 2;
Bit := Bit + 1;
until Zustaende = 0;
writeln('Ergebnis: ', Bit, ' Bit');
end.
Lösung von: Name nicht veröffentlicht
#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
int main()
{
int iZeichen = 2;
int iBit = 1;
int iEingabe;
printf("Bitte geben sie die Zeichenanzahl ein: ");
scanf_s("%i", &iEingabe);
fflush(stdin);
while(iBit <= 64) {
if(iEingabe <= iZeichen) {
printf("\nBenoetigte Bit : %i", iBit);
printf("\nMaximale Zeichen: %i", iZeichen);
getchar();
return 0;
} else {
iZeichen *= 2;
iBit += 1;
}
}
getchar();
return 0;
}
Lösung von: Elias Zech (Optics Balzers)
#!/usr/bin/python
# -*- coding: utf-8 -*-
# Beispiel mit einfachem Coding
Dezimalzahl = int(raw_input("Für welche Zahl wird die Anzahl Bits gesucht? "))
Potenz = 1
anzahlBits = 0
while Potenz <= Dezimalzahl:
anzahlBits = anzahlBits + 1
Potenz = Potenz * 2
if anzahlBits == 0: # für eine 0 wird auch ein Bit benötigt
anzahlBits = 1
print"Es werden",anzahlBits,"Bits für die Zahl",Dezimalzahl,"benötigt."
Lösung von: J. Reppe ()
#!/usr/bin/python
# -*- coding: utf-8 -*-
# Beispiel mit Python Binärfunktion
Dezimalzahl = int(raw_input("Für welche Zahl wird die Anzahl Bits gesucht? "))
binaerwert = bin(Dezimalzahl)
print"Es werden",len(binaerwert[2:]),"Bits für die Zahl",Dezimalzahl,"benötigt."
Lösung von: J. Reppe ()
import math
x = [365, 3, 9, 2000, 5000, 100000]
y = 0
for i in x:
print(math.ceil(math.log2(x[y])))
y += 1
Lösung von: Name nicht veröffentlicht
function sayBitLength(num) {
console.log(`Bitlänge für ${num}: ${num.toString(2).length}`);
}
let nums = [0, 3, 9, 365, 2000, 5000, 1e5];
for (n in nums) sayBitLength(nums[n]);
Lösung von: Lisa Salander (Heidi-Klum-Gymnasium Bottrop)
Verifikation/Checksumme:
Lösung: Aufgerundeter Zweierlogarithmus
Anzahl Bits = Aufrunden( Log2 (Anzahl Zustände))
- 365 -> 9
- 3 -> 2
- 9 -> 4
- 2000 -> 11
- 5000 -> 13
- 100 000 -> 17
Aktionen
Neue Lösung hinzufügen
Bewertung
Durchschnittliche Bewertung:
Meta
Zeit: | 0.5 |
Schwierigkeit: | k.A. |
Webcode: | xjyi-extf |
Autor: | Philipp G. Freimann (BBW (Berufsbildungsschule Winterthur) https://www.bbw.ch) |
Kommentare (1)
wäre spannend, in der Verifikation noch die Anzahl Bits für die Zahl 0 abzufragen :)