You are not logged in.

  • Login

1

Friday, November 11th 2011, 7:21pm

Logische Funktionen

Hallo,
ich habe folgendes Problem. Ich möchte zwei int's NXOR-en das ist möglich für AND OR und XOR (in Java eingebaut) aber für NXOR funktioniert das nicht. GIbt es ein Umweg dafür?

2

Friday, November 11th 2011, 8:39pm

http://www.java-samples.com/showtutorial.php?tutorialid=55

Einfach das bitwise NOT und XOR kombinieren.

3

Monday, November 14th 2011, 12:30pm

int x = (~((i) ^ (j))); das ist die problematische Stelle. ich kriege als ergebnis für 1 , 4 -6 sollte aber 2.

Das ganze COde:

Source code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public class nxor
{ 

    public static void main (String argv[]) 
    { 


         int i=4;

          
     for (int j=0;j<100;j++){
	 int x = (~((i) ^ (j)));
        System.out.print(j);
	System.out.print(" ");
	System.out.println(x);
	}


         
    } 
}

4

Monday, November 14th 2011, 7:06pm

4 = 0000 0000 0000 0000 0000 0000 0000 0100
1 = 0000 0000 0000 0000 0000 0000 0000 0001

XOR = 0000 0000 0000 0000 0000 0000 0000 0101

Negation = 1111 1111 1111 1111 1111 1111 1111 1010 = -6

Java nutzt die Hälfte des Wertebereiches für negative Zahlen. Da die 0 nur in einer Hälfte des Wertebereiches vorkommt, ist das Ergebnis -6 und nicht etwa -5.

Die Rechnung ist also richtig, nur deine Annahme ist falsch. Wie kommst du auf 2? Hast du nur 3 Bit betrachtet und ohne negativen Bereich?

5

Thursday, November 17th 2011, 5:07pm

Hast du nur 3 Bit betrachtet und ohne negativen Bereich?


Genau, ich habe rein rechnerisch in "human Format" die Rechnung durchgeführt. Und das brauche ich als Programergebnis. Es ist nämlich in java schon eingebaut für AND, OR und XOR und liefert angewendet auf Integers die richtige Resultate.

6

Thursday, November 17th 2011, 6:21pm

Das was du möchtest ist irgendwie special und hat nichts mit bitweiser Negation zu tun. Probiere dich doch mal an der Kasse java.util.BitSet.
Dort hast du auch diverse Methoden, die du brachst
Das einzige, was BitSet nicht kann, ist die Bits wieder in eine Zahl umzuwandeln. Da haben sich habe schon Leute Gedanken gemacht:
http://stackoverflow.com/questions/48739…t-bitset-to-int

Social bookmarks