| 

.NET C# Java Javascript Exception

2
Hallo,

mein Problem liegt im folgenden Code-Ausschnitt:

uint a = 2737970095;
uint b = 1976304495;

uint sum = a << b;

Der Shift muß unbedingt ausgeführt werden (wie er da steht), C# scheint aber nur eine Möglichkeit zu bieten, die einen uint mit einem Count-Wert bewegt, der als int-Wert festgelegt wird. Wie kann ich den Shift so ausführen, daß er ohne Schleifen (also ohne Zeitaufwand) durchgeführt werden kann?

Ich bedanke mich für alle Mühen und Hilfen. Nach einigen Versuchen habe ich mich für die nachfolgende Version entschieden und benötige nun keine Hilfe mehr:

uint sum = (uint)( ((a) << ((int)(b))));
News:
11.10.2011
Bastler 61 1 4
Siehe Antwort von luedi

1976304495 hat in den unterste 5 bits einen Wert von 15. Folglich rechnet C#

2737970095 << 15
WolfgangKluge 11.10.2011
... was das mit Zeitaufwand zu tun hat, hab ich aber noch nicht kapiert ;)
WolfgangKluge 11.10.2011
2 Antworten
2
Macht das obige Beispiel überhaupt Sinn? Die Online-Hilfe (http://msdn.microsoft.com/en-us/library/a1sway8w(VS.90).aspx) sagt zum Shift-Operator, dass der rechte Wert immer ein int sein muss und dass, je nachdem ob der linke Wert ein (u)int oder (u)long ist, zum shiften die untersten 5 oder 6 Bits des rechten Wertes verwendet werden.

Im Zweifel könntest du den zweiten Wert, solange er kleiner als maxint bleibt, nach int casten.

Gruß
Klaus
11.10.2011
luedi 2,1k 1 9
> die unterstes 5 bis 6 bits
oder in Zahlen: der rechte Wert muss ein int im Bereich von 0 bis 31 bzw. 63 sein.
Wenn Du den linken Wert (z.B. ein int) um 32 Stellen verschieben würdest, ist der Wert immer 0. Daher macht das und alles darüber keinen Sinn...
Bei long entsprechend 63 Stellen.

4294967295 << 32 == 4294967295
WolfgangKluge 11.10.2011
0
Ein int Wert reicht völlig aus. Die Ergebnisse sind identisch bei i << 1, i << 33, i << 65, ... Somit solltest du b % 32 verwenden können. Damit wäre b = 15 und sum = 232226816 (und der Zeitbedarf gegen 0)
11.10.2011
me 1,1k 2 9

Stelle deine .net-Frage jetzt!
TOP TECHNOLOGIES CONSULTING GmbH