![]() |
Anzeige:
|
|
|||||||
| XProfan Alles rund um die Programmiersprache XProfan. |
|
![]() |
|
|
LinkBack | Themen-Optionen | Ansicht |
|
|
#1 (Direktlink) |
|
Super-Moderator
![]() Registriert seit: 05.02.2009
Ort: Westliches NRW
Alter: 44
Beiträge: 5.094
|
Kennt jemand einen simplen Algo, um von einem Wert aus immer die nächste Potenz von 2 zu finden? Also z.B:
Bei 980 wäre das 1024, bei 400 wäre es 512. Also immer das nächst höhere von 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, ... Sollte möglichst ohne viel If-Abgefrage funktionieren, ich hab schon daran gedacht, das höchste Bit zu lokalisieren und dann alle Bits zu löschen und das lokalisierte zu setzen. Aber sicher kennen die Herren Mathematiker noch was Besseres. Wäre dafür sehr dankbar.
__________________
Gruß, Frank ![]() Webpage http://frabbing.bplaced.net mit Freeware - Tools, Spiele und Grafiken. |
|
|
|
|
|
|
#2 (Direktlink) |
|
Super-Moderator
![]() Registriert seit: 05.02.2009
Ort: Westliches NRW
Alter: 44
Beiträge: 5.094
|
P.S.: Hab noch diesen Code gefunden:
Code:
unsigned int nextpoweroftwo(unsigned int n)
{
int i=0;
for(;n;++i,n>>=1);
return 1 << i;
}
__________________
Gruß, Frank ![]() Webpage http://frabbing.bplaced.net mit Freeware - Tools, Spiele und Grafiken. |
|
|
|
|
|
#3 (Direktlink) |
|
Super-Moderator
![]() Registriert seit: 06.02.2009
Ort: Coswig
Alter: 27
Beiträge: 1.159
|
Code:
proc NextPowerofTwo Parameters p& var l!=Lg(p&)/Lg(2) Return 2^If(l!<>Int(l!),Int(l!)+1,Int(l!)) endproc Und da fällt mir wieder mal auf, dass XProfan kein Frac bzw. PF hat.
__________________
XProfan-Profi (XProfan X2+XPIA) http://jacdelad.bplaced.net http://jacdelad.square7.ch |
|
|
|
|
|
#4 (Direktlink) |
|
Dauergast
![]() Registriert seit: 06.02.2009
Ort: Wien, Österreich
Beiträge: 1.083
|
Code:
cls : declare n! nochmal: print "Wert = "; : input n! : case n!=0 : end print int(2^int(lg(n!-0.000000000001)/lg(2)+1)) waitinput: goto "nochmal" Franks Code ist dagegen ein Klassiker aus der Assemblerprogrammierung. Gruss
__________________
Win7-64HomPremSP1,XProfan11.2a,XPIA,JWasm,XPSE,IntelCoreQuad2.5GHz/4GB/je1TB HD intern:esataBay:USB2:USB3 Geändert von p. specht (31.12.2010 um 19:10 Uhr) |
|
|
|
|
|
#5 (Direktlink) |
|
Super-Moderator
![]() Registriert seit: 05.02.2009
Ort: Westliches NRW
Alter: 44
Beiträge: 5.094
|
Das muss einfacher gehen, ich wills auch nach Assembler umsetzen. Brauche Geschwindigkeit.
__________________
Gruß, Frank ![]() Webpage http://frabbing.bplaced.net mit Freeware - Tools, Spiele und Grafiken. |
|
|
|
|
|
|
#6 (Direktlink) | |
|
Forenmaskottchen
![]() Registriert seit: 16.05.2010
Ort: Berlin
Beiträge: 724
|
Zitat:
Code:
Proc NextPowerOfTwo
Parameters n&
Declare i&
WhileLoop 0, n& >> 1
i& = &Loop
Wend
i& = i& + 1
Return 1 << i&
EndProc
cls
Print NextPowerOfTwo(400)
WaitKey
|
|
|
|
|
|
|
#7 (Direktlink) |
|
Super-Moderator
![]() Registriert seit: 06.02.2009
Ort: Coswig
Alter: 27
Beiträge: 1.159
|
Oach, ich hab mir so eine Mühe gegeben.
__________________
XProfan-Profi (XProfan X2+XPIA) http://jacdelad.bplaced.net http://jacdelad.square7.ch |
|
|
|
|
|
#8 (Direktlink) |
|
Super-Moderator
![]() Registriert seit: 05.02.2009
Ort: Westliches NRW
Alter: 44
Beiträge: 5.094
|
Danke, Leute! Alle haben sich Mühe gegeben.
Da ich das eher für Assembler benötige, brauchte ich aber eine Lösung ohne große Mathefunktionen. Darum hab ich das jetzt so umgesetzt, was hervoragend funktioniert: Code:
; ________________________________________________________________________________________________________________
NextPowerOf2 proc zahl:DWORD
; ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
mov eax,zahl
mov ebx,eax
mov ecx,eax
dec ecx
and eax,ecx
mov ecx,ebx
.if eax!=0
mov ecx,1
next:
shr eax,1
shl ecx,1
cmp eax,0
jne next
.endif
mov eax,ecx
ret
NextPowerOf2 endp
Danke an alle und einen guten Rutsch!!!
__________________
Gruß, Frank ![]() Webpage http://frabbing.bplaced.net mit Freeware - Tools, Spiele und Grafiken. |
|
|
|
![]() |
|
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
|
|
Ähnliche Themen
|
||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| iPhone-Jailbreaks: Die nächste Runde | Info | Sicherheitsmeldungen von heise.de | 0 | 09.09.2010 18:10 |
| Nächste XProfan-Version | Jac de Lad | Anregungen & Bugreports | 2 | 22.06.2009 18:30 |
| Potenz-Rechnen geht nicht?!?! | SE-Freak | C/C++, Visual C++, Visual C++.NET | 8 | 31.01.2008 17:41 |
| Medal of Honor????Das nächste | sidie | Computerspiele | 0 | 30.05.2005 21:40 |