einzelne Bits prüfen

R

Romy89

Gast
Ich sitze gerade an einer Informatikhausaufgabe, bei der wir die binäre Exponentiation implementieren sollen. Das Programm steht soweit und sollte, glaub ich auch funktionieren.
Exponent und Mantisse werden als Kommandozeilenparameter eingelesen und in integer gespeichert.
Nun brauche ich eine Funktion, die mir jedes einzelne Bit vom integer Exponent auf 1 oder 0 prüft. Das ist das einzige was mir fehlt und ich verzweifel dran...

bin für jeden Vorschlag dankbar :)
 

eRaaaa

Top Contributor
Mhm, meinst du so etwas:
Java:
	public static boolean testBit(int n, int pos) {
		return (n & 1 << pos) != 0;
	}

???:L

Ansonsten könnte man sich auch den Binärstring holen und mit charAt schauen ob '0' oder '1' an dem gegeben char steht. Oder habe ich dich gänzlich falsch verstanden?
 
R

Romy89

Gast
Ich füg mal meinen bisherigen Programmcode mit ein. Knackpunkt an der Sache ist, dass wir innerhalb der Methode potenzieren, keine anderen Methoden aufrufen dürfen. Wir sollen stattdessen mit Shift-Operatoren und Booleschen Operatoren arbeiten. In der momentanen Version (mit testBit) schimpft der Compiler "cannot find symbol" in Zeile 11 (die Zeile mit testBit, das t ist als falsch markiert)...

Java:
public class Potenzieren {
	

    public static long potenziere(int x, int n, int k) {
     long result = x;  // entspricht zu diesem Zeitpunkt dem x_0 (siehe Angabe)
		
		for (int i = k; i <= k; i--) { // i entspricht der aktuellen position des bits
	  
		
		
		if () {
			
			result = result * (x * (x * x));
			//n = n << p;
			
		} else {
			
			result = result * (x * x);
			//n = n << p;
			
		}
			
		}
      
	   return result;   // soll hier dem Endergebnis x_k (siehe Angabe) entsprechen
  }

  public static void main(String[] args) {
    int x = Integer.parseInt(args[0]);  // x = Mantisse
    int n = Integer.parseInt(args[1]);  // n = Exponent
    int k = Integer.SIZE - Integer.numberOfLeadingZeros(n) - 1; // k = Anzahl benötigter Bits zur Darstellung von n ohne führende 0en und vorzeichen
    System.out.println(x + " hoch " + n + " ergibt " + potenziere(x, n, k));
  }

}
 
R

Romy89

Gast
Hab grad gemerkt, dass ich den falschen code kopiert hab:

Java:
public class Potenzieren {
	

    public static long potenziere(int x, int n, int k) {
     long result = x;  // entspricht zu diesem Zeitpunkt dem x_0 (siehe Angabe)
		
		for (int i = k; i <= k; i--) { // i entspricht der aktuellen position des bits
	  
		
		
		if (testBit(n,i) == true) {
			
			result = result * (x * (x * x));
			//n = n << p;
			
		} else {
			
			result = result * (x * x);
			//n = n << p;
			
		}
			
		}
      
	   return result;   // soll hier dem Endergebnis x_k (siehe Angabe) entsprechen
  }

  public static void main(String[] args) {
    int x = Integer.parseInt(args[0]);  // x = Mantisse
    int n = Integer.parseInt(args[1]);  // n = Exponent
    int k = Integer.SIZE - Integer.numberOfLeadingZeros(n) - 1; // k = Anzahl benötigter Bits zur Darstellung von n ohne führende 0en und vorzeichen
    System.out.println(x + " hoch " + n + " ergibt " + potenziere(x, n, k));
  }

}
 
R

Romy89

Gast
Achso, das muss man erst definieren? Ich dachte, das wäre ne Funktion wie z.B. Math.round oder sowas... hmm, dann hat sich das ja eh erledigt, da ich ja keine Methodenaufrufe machen darf. Ich brauch irgendwie etwas, das mir die Bits nacheinander durchprüft, nur unter Verwendung von Shift- und Booleschen Operatoren. Ansonsten rechne ich die Zahl in Binär um, speicher das Ergebnis als String und prüfe dann nacheinander die Charaktere. Hatte nur gehofft, es gäbe da eine "elegantere" Lösung...
 

eRaaaa

Top Contributor
Hä? Hast du meinen Post mit der testBit-Methode übersehen? ;(
Musst ja nicht die Methode kopieren und aufrufen ---> (n & 1 << pos) != 0; und gut ist! Aber ich glaube es wäre besser wenn du dich selbst ein wenig mit der Materie beschäftigst, denn so wie es aussieht hast du großen Nachholbedarf (nicht böse gemeint, mir war aber selbst nicht klar, dass ich hier bei Hausaufgaben helfen würde in meinem ersten Post(habs überlesen :D ))
 
R

Romy89

Gast
Nein, nein aber da es in der Methode drin war, dachte ich irgendwie automatisch, dass ich des net so hernehmen kann.. hm
Das stimmt natürlich, ich hab noch nicht so wahnsinnig viel Ahnung von diesen Booleschen/Shift-Operatoren... aber ich versteh einfach nicht wie mir diese Boole-Dinger wirklich helfen sollen, bei der Anweisung "Wenn an Bitstelle x von Exponent n eine 1 steht, dann mach das". Würdest du mir vielleicht "übersetzen" was (n & 1 << pos) != 0.
Das << steht ja für Linksverschiebung des linken teils (n & 1) um pos-Stellen, was wiederrum auf ungleich 0 geprüft wird, oder ? aber ich versteh das n & 1 noch nicht so ganz ("Exponent n UND 1" ??)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
O Einzelne Bits umwandeln und prüfen Java Basics - Anfänger-Themen 23
N Einzelne Werte aus einem TreeSet auslesen Java Basics - Anfänger-Themen 2
W String einer Textdatei in einzelne Stringobjekte pro Zeile aufteilen Java Basics - Anfänger-Themen 14
E JTable einzelne Zelle färben Java Basics - Anfänger-Themen 2
B Verkettete Liste durchgehen und einzelne Elemente in neue Liste tun Java Basics - Anfänger-Themen 9
B Inventar als einzelne Klassen anlegen? Java Basics - Anfänger-Themen 12
X Wie kann ich Zahlen in einzelne Zifferne zerlegen? Java Basics - Anfänger-Themen 3
C Auf einzelne Werte aus HashSet zugreifen Java Basics - Anfänger-Themen 10
K Einzelne Email verschieben nicht möglich Java Basics - Anfänger-Themen 3
F Arrays Sätze speichern und einzelne Worte mit Index Angabe auslesen Java Basics - Anfänger-Themen 4
M Einzelne Pixel in einem Bild auslesen und bearbeiten Java Basics - Anfänger-Themen 1
B lanterna einzelne Zeichen aus dem Terminal löschen Java Basics - Anfänger-Themen 0
C Matrixmultiplikation ohne einzelne Elemente aufzurufen Java Basics - Anfänger-Themen 2
T JTable einzelne Zeilen löschen Java Basics - Anfänger-Themen 3
A Variablen String Array in einzelne Strings auspalten Java Basics - Anfänger-Themen 4
J Methoden Einzelne Objekte eines Vectors addieren Java Basics - Anfänger-Themen 10
S Einzelne Buchstaben aus Jtextfield in array Java Basics - Anfänger-Themen 2
R Einzelne Zahlen von der Eingabe (Scan) weiterverarbeiten Java Basics - Anfänger-Themen 3
D Kleinere Positionsangabe als einzelne Pixel bei Image? Java Basics - Anfänger-Themen 28
F Einzelne Werte aus einem Array vergleichen? Java Basics - Anfänger-Themen 8
H Input/Output JTextArea einzelne Zeile auslesen Java Basics - Anfänger-Themen 6
X String einzelne Buchstaben ersetzen Java Basics - Anfänger-Themen 4
M Einzelne Zeilen nach Zeichen auslesen Java Basics - Anfänger-Themen 4
T Erste Schritte einzelne Wörter aus textdatei lesen... Java Basics - Anfänger-Themen 4
M JTable einzelne Spalte rechtsbündig Java Basics - Anfänger-Themen 2
M JUnit - nur einzelne Methode testen? Java Basics - Anfänger-Themen 4
S Einzelne Werte von Array-Feld löschen Java Basics - Anfänger-Themen 15
N TextZeile in einzelne Strings teilen, die mit Komma getrennt sind Java Basics - Anfänger-Themen 4
A einzelne Zeichen aus String auslesen Java Basics - Anfänger-Themen 3
J Von einem String einzelne Wörter speichern Java Basics - Anfänger-Themen 6
H String zerlegen in einzelne Buchstaben (char)?? Java Basics - Anfänger-Themen 7
A Einzelne TeilStrings einfärben Java Basics - Anfänger-Themen 3
S mehrere einzelne klassen in eine datei packen Java Basics - Anfänger-Themen 4
K Datentypen Liste: Einzelne Einträge ändern Java Basics - Anfänger-Themen 2
D Einzelne Ziffern aus einem String Java Basics - Anfänger-Themen 10
B Was für Aufgaben haben die einzelne Entwurfsmuster? Java Basics - Anfänger-Themen 9
C Einzelne Werte eines Arrays ausgeben Java Basics - Anfänger-Themen 2
B Laufzeitverschlechterung durch Auslagerung in einzelne Threads Java Basics - Anfänger-Themen 8
MrMilti einzelne Methoden einer Klasse auslagern Java Basics - Anfänger-Themen 6
T Einzelne Ziffer zusammenfügen (ohne Strings oder Arrays) Java Basics - Anfänger-Themen 2
M einzelne Pixel setzen/auslesen Java Basics - Anfänger-Themen 2
N aus HTML einzelne Inhalte (z.B. Tabelleninhalte) auslesen Java Basics - Anfänger-Themen 10
A Nur einzelne Methode einer anderen Klasse starten Java Basics - Anfänger-Themen 2
G Einzelne Datei im jar verändern ? Java Basics - Anfänger-Themen 5
B Einzelne Zellen in JTable markieren Java Basics - Anfänger-Themen 2
C String.split("") einzelne Positionen abfragen Java Basics - Anfänger-Themen 10
ven000m Primzahl.class wie starte ich diese einzelne Datei? Java Basics - Anfänger-Themen 10
R einzelne Zelle einer JTable bearbeiten Java Basics - Anfänger-Themen 2
M Object zu Int Problem, obwohl einzelne Objecte Int sind =( Java Basics - Anfänger-Themen 2
J String - einzelne Zeichen sortieren Java Basics - Anfänger-Themen 14
G Einzelne Zeilen beschreiben Java Basics - Anfänger-Themen 4
E einzelne Zeile mithilfe Steams aus Textdatei überschreiben Java Basics - Anfänger-Themen 23
F einzelne Buchstaben in JTextField ändern Java Basics - Anfänger-Themen 11
S setCellRenderer für EINZELNE Zelle Java Basics - Anfänger-Themen 9
S Zugriff auf einzelne Buchstaben eines String Java Basics - Anfänger-Themen 16
J Jtable - wie einzelne zelle markieren Java Basics - Anfänger-Themen 8
I Wie viele 1 an Bits hat die Zahl x? Java Basics - Anfänger-Themen 5
D Erste Schritte Operatoren zur Manipulation von Bits "~" Java Basics - Anfänger-Themen 5
J Bits zusammen zählen Java Basics - Anfänger-Themen 4
X Datentypen Int oder String in Bits/Bytes umwandeln Java Basics - Anfänger-Themen 10
L Byte[] to String, doch bits sind gespiegelt (MSB/LSB) Java Basics - Anfänger-Themen 3
A Länge einer Hexadezimalzahl in Bits Java Basics - Anfänger-Themen 40
G Datentypen bits, bytes, chars - Verständnisfrage Java Basics - Anfänger-Themen 5
B Wieviele bits belegen die Datentypen? Java Basics - Anfänger-Themen 2
P Bits bei BigInteger abprüfen Java Basics - Anfänger-Themen 2
I Bits lesen und schreiben Java Basics - Anfänger-Themen 6
D Wie kann man in Java nach Arrays auf Duplikate prüfen Java Basics - Anfänger-Themen 12
J Schlüsselworte Prüfen, ob ein bestimmtes, ganzes Wort in einem String enthalten ist. Java Basics - Anfänger-Themen 6
Ostkreuz Int Scanner auf Enter Eingabe prüfen Java Basics - Anfänger-Themen 4
S Prüfen ob ein zweidimensionales Array rechteckig ist Java Basics - Anfänger-Themen 4
M Prüfen on eine Zahl im String enthalten ist Java Basics - Anfänger-Themen 3
ravenz Schleife mit for über String Array „zahlen“und prüfen ob Wert „a“ oder „b“ oder „c“ entspricht (mittels || ) Java Basics - Anfänger-Themen 4
Fiedelbambu Prüfen von Komma stelle beim Taschenrechner Java Basics - Anfänger-Themen 5
sserio Prüfen, ob eine Zahl eine periodische Zahl ist Java Basics - Anfänger-Themen 20
I Auf vollen Monat prüfen? Java Basics - Anfänger-Themen 22
A Dateiname auf Vorkommen prüfen Java Basics - Anfänger-Themen 29
I Prüfen, ob Anzahl an Monate ein Jahr ergeben Java Basics - Anfänger-Themen 4
K Warum gibt mir z. B. 40^128 eine Zahl? Ich dachte mit xor kann man nur booleanwerte erhalten, also prüfen ob etwas whar oder falsch ist? Java Basics - Anfänger-Themen 1
W Klasse existiert prüfen Java Basics - Anfänger-Themen 5
Q Prüfen ob Zahl als Summe von Potenzen dargestellt werden kann. Java Basics - Anfänger-Themen 20
U Kann man bei Java gleich mehrere Bedingungen prüfen in der If, aber in einem "Satz"? Java Basics - Anfänger-Themen 1
O Ich ahbe einen char und diesen soll ich bei .matches prüfen, also ob der char in meiner Zeichenkette vorhanden ist, wie mache ich das? Java Basics - Anfänger-Themen 9
B Array nach Wert prüfen rekursiv Java Basics - Anfänger-Themen 5
G Strings auf Gleichheit prüfen - Aufgabe vom Prof. Java Basics - Anfänger-Themen 5
M Array auf Primzahlen prüfen Java Basics - Anfänger-Themen 7
K Wie String prüfen ob drei mal das gleiche Zeichen vorkommt? Java Basics - Anfänger-Themen 7
J ArrayList auf bereits vorhanden eintrag prüfen Java Basics - Anfänger-Themen 5
X Zwei Dimensionales Array prüfen Java Basics - Anfänger-Themen 1
B Prüfen, ob Zeit Überschreitung Java Basics - Anfänger-Themen 2
B Sudoku prüfen Java Basics - Anfänger-Themen 13
M Prüfen auf null ohne NPE Java Basics - Anfänger-Themen 1
X Array auf Leerstellen prüfen Java Basics - Anfänger-Themen 1
FelixN Prüfen, ob ein 2D-Array rechteckig ist Java Basics - Anfänger-Themen 42
C Erste Schritte JComboBox Einträge auf Duplikat prüfen Java Basics - Anfänger-Themen 4
M prüfen ob alle array werte gleich sind Java Basics - Anfänger-Themen 27
C Array auf Null-Inhalte prüfen Java Basics - Anfänger-Themen 9
B Prüfen, ob Country Code in Europa ist? Java Basics - Anfänger-Themen 24
L Prüfen ob Fax (Tif-Datei) vollständig angekommen ist Java Basics - Anfänger-Themen 15
O Datenstruktur auf SET prüfen in O(n) Java Basics - Anfänger-Themen 32
U Mehrfacheingabe auf bestimmte Parameter prüfen Java Basics - Anfänger-Themen 8

Ähnliche Java Themen

Neue Themen


Oben