Seite 1 von 1

core bitshifter als ersatz für multiplikation und division

BeitragVerfasst: Di 17. Jul 2007, 20:16
von toxonic
wird vielleicht dem ein oder anderen doch noch nicht bewusst sein, deswegen hau ich's hier mal in die fundgrubenrubrik... :D
die bitshifter module in core (built in module/bit/bit>> und bit<<) sind in einigen fällen hervorragend als ersatz für multiplikation und division geeignet, wenn eingangswerte integer sind und die ergebnisse vorher auch schon als integer bekannt sind!
da diese module ja nix anderes machen als den anliegenden integer wert in eine binärzahl zu verwandeln und die einzelnen bits nach links/rechts zu verschieben, halbiert man den wert pro bit verschiebung nach rechts bzw. verdoppelt ihn pro bitverscheibung nach links, d.h. angenommen ein wert von 64 liegt am bit>> an und man verschiebt jetzt die bits um eine stelle, liegt am ausgang der wert 32 an, bei 2 stellen der wert 16, bei 3 stellen der wert 8, u.s.w.....
da im prinzip damit nur divisionen und multiplikationen mit durch 2 teilbaren zahlen möglich ist, schränkt das zwar die verwendbarkeit ein, aber ist in vielen fällen immer noch brauchbar, etwa bei der umrechnung von notenwerten u.s.w..... der eigentliche vorteil ist natürlich die cpu ersparnis, da so eine binär operation kaum so viel cpu power saugt, wie eine komplexe rechenprozedur wie etwa die division...

Re: core bitshifter als ersatz für multiplikation und divisi

BeitragVerfasst: Di 17. Jul 2007, 21:56
von herw
ja gut, dass Du das erwähnst. Die ganzen Bitoperatoren habe ich bisher noch nie benutzt. Ich denke, dass man damit einiges anfangen kann, nicht nur die Multiplikation oder Division, die Du hier ansprichst. Interessant sind da auch die Logik-Funktionen und die Benutzung der Maske.
Mir fällt nur im Augenblik auch noch keine Anwendung ein, aber man kann fast sicher sein, dass die Entwickler von NI diese Operatoren nicht ohne Hintergedanken hier anbieten.
Meist stellt man erst nach einigen Jahren (?!?!) deren Wert fest.

ciao herw

Re: core bitshifter als ersatz für multiplikation und divisi

BeitragVerfasst: Mi 18. Jul 2007, 21:46
von toxonic
herw hat geschrieben:ja gut, dass Du das erwähnst. Die ganzen Bitoperatoren habe ich bisher noch nie benutzt. Ich denke, dass man damit einiges anfangen, nicht nur die Multiplikation oder Division, die Du hier ansprichst. Interessant sind da auch die Logik-Funktionen und die Benutzung der Maske.
Mir fällt nur im Augenblik auch noch keine Anwendung ein, aber man kann fast sicher sein, dass die Entwickler von NI diese Operatoren nicht ohne Hintergedanken hier anbieten.
Meist stellt man erst nach einigen Jahren (?!?!) deren Wert fest.

ciao herw


mir ist aufgefallen, das ich in kaum einer corecell je einen bit-operator gesehen habe, daher hab ich mich gefragt, was es damit genau auf sich hat..... ich muss zugeben, das binärsystem ist mir eher fremd, habe mich damit kaum befasst, also habe ich meinen mitbewohner mal um nachhilfe gebeten, der von beruf programmierer ist und mathe studiert hat. der hat mich auf den trichter mit den bitshiftern gebracht!
btw: die logik funktionen sind mir soweit bekannt, aber was hat es mit den masken auf sich, von denen du sprichst? weiss nicht was du damit meinst!?
die anderen bitoperatoren sind mir in ihrer funktion jetzt zwar auch klar, aber eine anwendungsmöglichkeit ist mir da bisher auch noch nicht eingefallen!

BeitragVerfasst: Do 19. Jul 2007, 20:21
von helmsklamm
klingt interessant.
nur blöd, das audio selten im entsprechenden teilerfaktor vorliegt und bei event dürfte sich der gewinn im bereich der messunschärfe abspielen.

btw: ich hab mal n cpu vergleich zwischen multiply, realis und selektor gemacht (um das signal nur zu muten).
der laie denkt vielleicht hier, das n realis eigentlich günstiger als ne 0-multi sein soltte, da diese ja pro SR takt stattfindet. is aber nicht - nimmt sich beides nichts. nur vom selector ist abzuraten, auch bei curve = none (ergo relais mode), frist der manchmal entschieden (ca. 0.03% bei höchster SR) mehr. seltsamerweise nicht immer, aber ich gebs auf, mir darüber gedanken zu machen;)

BeitragVerfasst: Do 19. Jul 2007, 23:44
von herw
helmsklamm hat geschrieben:klingt interessant.
nur blöd, das audio selten im entsprechenden teilerfaktor vorliegt und bei event dürfte sich der gewinn im bereich der messunschärfe abspielen.

btw: ich hab mal n cpu vergleich zwischen multiply, realis und selektor gemacht (um das signal nur zu muten).
der laie denkt vielleicht hier, das n realis eigentlich günstiger als ne 0-multi sein soltte, da diese ja pro SR takt stattfindet. is aber nicht - nimmt sich beides nichts. nur vom selector ist abzuraten, auch bei curve = none (ergo relais mode), frist der manchmal entschieden (ca. 0.03% bei höchster SR) mehr. seltsamerweise nicht immer, aber ich gebs auf, mir darüber gedanken zu machen;)
ok es wäre mal interssant, alle Ensembles herauszusuchen, die den Bitshifter benutzen, um festzustellen, was der Clou daran ist.

BeitragVerfasst: Sa 21. Jul 2007, 00:28
von helmsklamm
also wenn man das teil konseqeunt bei allen in frage kommenden eventberechnungen ersetzt, kommt man bei umfangreichen ensembles vielleicht uffn halbes prozentchen bei heutigen prozies.

ich denk mir das ding MUSS nen andren nutzen haben. vielleicht ist der "quotient" garnicht relevant, sondern nur der "nenner" oder vv. villeicht muss nur ein "operator" ganzzahlig sein und das teil spilet seine stärken aus.
aber das ist reine spekulation.

BeitragVerfasst: Mo 23. Jul 2007, 10:30
von tymes2
helmsklamm hat geschrieben:btw: ich hab mal n cpu vergleich zwischen multiply, realis und selektor gemacht (um das signal nur zu muten)..." "...nur vom selector ist abzuraten, auch bei curve = none (ergo relais mode), frist der manchmal entschieden (ca. 0.03% bei höchster SR) mehr. seltsamerweise nicht immer, aber ich gebs auf, mir darüber gedanken zu machen;)

Dir ist aber schon klar, dass das RELAY laut Infotext nur zur "backward compatibility" da ist und das Ctl-Signal anders interpretiert wird?! Daher würde ich eher vom Relay abraten... wo kriegst Du eigentlich Zahlen wie "0,03% mehr" her? Nur mal so interessehalber.

BeitragVerfasst: Fr 3. Aug 2007, 19:40
von helmsklamm
jo, den text kenn ich*, glaub ich aber nicht - das ding ist effizienter. zur "zahl" : nen cpu-modul und nen quantiziertes numerik (2 nachkommas) und dann intensiv beobachten. besser wär natürlich ein 50 mhz rechner oder so.

*mich stört natürlich auch das das relais bei >1 genau den anderen eingang ausgibt als der selektor, beliebte äh-was-denn-nu-schon-wieder fehlerqeulle;)

Re: core bitshifter als ersatz für multiplikation und division

BeitragVerfasst: Mi 16. Feb 2011, 23:14
von Triton
Modulo 2^n mit Integer geht prima damit.

Wenn man z.B. eine Integer X hat und diese modulo 512 braucht, kann man X AND 511 nehmen. Kann man z.B. zum Bauen von Delays (Kreisbuffer) oder bei der EzFFT gebrauchen.