Paules-PC-Forum.de Anzeige:

Microsoft Windows Intune: PC-Verwaltung und -Sicherheit in der Cloud: Updateverwaltung, Anti-Virus und vieles mehr!


Zurück   Paules-PC-Forum.de > Programmierung > XProfan

XProfan Alles rund um die Programmiersprache XProfan.

EM-Tippspiel

Paule bei Facebook


Paule bei Twitter


Letzte Forenthemen
Gehe zum ersten neuen Beitrag Algorithmen Teil IV...
Aufrufe: 3361, Antworten: 129
Gehe zum ersten neuen Beitrag Hamachi deinstallieren
Aufrufe: 58, Antworten: 5
Gehe zum ersten neuen Beitrag Bundesliga-Tippspiel Saision...
Aufrufe: 7670, Antworten: 187
Gehe zum ersten neuen Beitrag PPF - Spiel "Wörter weiter...
Aufrufe: 26970, Antworten: 4223
Gehe zum ersten neuen Beitrag PPF - Shoppingwahn
Aufrufe: 50963, Antworten: 1397
Gehe zum ersten neuen Beitrag Pc lahmt plötzlich
Aufrufe: 186, Antworten: 6
Gehe zum ersten neuen Beitrag PC fährt nicht mehr hoch.
Aufrufe: 0, Antworten: 0
Gehe zum ersten neuen Beitrag Von Live CD Windowspfad...
Aufrufe: 329, Antworten: 19
Gehe zum ersten neuen Beitrag Captur 2.2 (Snow Leo)
Aufrufe: 28, Antworten: 0
Gehe zum ersten neuen Beitrag Captur 2.3 (Lion)
Aufrufe: 34, Antworten: 0
Zeige:





Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 31.12.2010, 15:04   #1 (Direktlink)
Super-Moderator
 
Benutzerbild von Frabbing
 
Registriert seit: 05.02.2009
Ort: Westliches NRW
Alter: 44
Beiträge: 5.094
Standard Was ist die nächste 2er Potenz?

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.
Frabbing ist gerade online   Mit Zitat antworten
Werbung

Windows 7 Tipps und Tricks in Bildern

Alt 31.12.2010, 15:12   #2 (Direktlink)
Super-Moderator
 
Benutzerbild von Frabbing
 
Registriert seit: 05.02.2009
Ort: Westliches NRW
Alter: 44
Beiträge: 5.094
Standard

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; 
}
Mal sehen, wie man das am besten umsetzt.
__________________
Gruß, Frank


Webpage http://frabbing.bplaced.net
mit Freeware - Tools, Spiele und Grafiken.
Frabbing ist gerade online   Mit Zitat antworten
Alt 31.12.2010, 15:28   #3 (Direktlink)
Super-Moderator
 
Benutzerbild von Jac de Lad
 
Registriert seit: 06.02.2009
Ort: Coswig
Alter: 27
Beiträge: 1.159
Standard

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
Jac de Lad ist offline   Mit Zitat antworten
Alt 31.12.2010, 16:14   #4 (Direktlink)
Dauergast
 
Benutzerbild von p. specht
 
Registriert seit: 06.02.2009
Ort: Wien, Österreich
Beiträge: 1.083
Standard

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"
Funktioniert behelfsweise auch ganz gut (genau bis zur 12. signifikanten bzw. Kommastelle, Jac´s Code prüft aber explizit und damit noch genauer auf 'Nachkommastellen alle Null')

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)
p. specht ist gerade online   Mit Zitat antworten
Alt 31.12.2010, 16:33   #5 (Direktlink)
Super-Moderator
 
Benutzerbild von Frabbing
 
Registriert seit: 05.02.2009
Ort: Westliches NRW
Alter: 44
Beiträge: 5.094
Standard

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.
Frabbing ist gerade online   Mit Zitat antworten
Werbung

Windows 7 Tipps und Tricks in Bildern

Alt 31.12.2010, 16:33   #6 (Direktlink)
Forenmaskottchen
 
Benutzerbild von ts-soft
 
Registriert seit: 16.05.2010
Ort: Berlin
Beiträge: 724
Standard

Zitat:
Zitat von Frabbing Beitrag anzeigen
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; 
}
Mal sehen, wie man das am besten umsetzt.
Naja, so:
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
ts-soft ist gerade online   Mit Zitat antworten
Alt 31.12.2010, 18:17   #7 (Direktlink)
Super-Moderator
 
Benutzerbild von Jac de Lad
 
Registriert seit: 06.02.2009
Ort: Coswig
Alter: 27
Beiträge: 1.159
Standard

Oach, ich hab mir so eine Mühe gegeben.
__________________
XProfan-Profi (XProfan X2+XPIA)
http://jacdelad.bplaced.net
http://jacdelad.square7.ch
Jac de Lad ist offline   Mit Zitat antworten
Alt 31.12.2010, 18:29   #8 (Direktlink)
Super-Moderator
 
Benutzerbild von Frabbing
 
Registriert seit: 05.02.2009
Ort: Westliches NRW
Alter: 44
Beiträge: 5.094
Standard

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
Klappt mit allen positiven Ganzzahlen, aber Negative und Floats sind auch nie vorgesehen.
Danke an alle und einen guten Rutsch!!!
__________________
Gruß, Frank


Webpage http://frabbing.bplaced.net
mit Freeware - Tools, Spiele und Grafiken.
Frabbing ist gerade online   Mit Zitat antworten
Antwort

  Paules-PC-Forum.de > Programmierung > XProfan

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen erlaubt, neue Themen zu verfassen.
Es ist Ihnen erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


Ä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



Alle Zeitangaben in WEZ +2. Es ist jetzt 12:41 Uhr.


Powered by vBulletin® Version 3.8.7 (Deutsch)
Copyright ©2000 - 2012, vBulletin Solutions, Inc.
Powered by vBCMS® 2.7.0 ©2002 - 2012 vbdesigns.de
(c) Paules-PC-Forum.de

::: Impressum :::

Search Engine Optimization by vBSEO 3.3.2