 |
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Heiko
Anmeldungsdatum: 28.07.2008 Beiträge: 101
|
Verfasst am: 20.03.2009, 00:15 Titel: SHR nachbauen oder die geschichte der signed bitverschiebung |
|
|
Ich versuch SHR nachzubauen, da ich aber von bitverschiebungen nicht wirklich einen plan habe, frage ich hier dennoch nach.
dass wert/2^bits ist, weiß ich.
aber nun kommt die signed geschichte dazu.
es geht darum, daß das erste bit bei negativen zahlen 1 ist, dieses muss zwischengespeichert werden und die stelle dafür durch eine null ersetzt werden, dann kann man die division durchführen.anschliessend, sollte das erste zwischengespeicherte wert 1 (also negativer dec wert) sein, muss man wohl den wert um 1 erhöhen und wieder ein minus davor setzen.
kann mir das vielleicht jemand in code erklären, ich sitz paar stunden und weiß nicht wie ich es umsetzen soll.
ich schreib immer noch an wrapper für glbasic und auch freebasic, aber glbasic hat das shr leider nicht in dieser form.
wie würde man dies sozusagen manuell bauen können |
|
Nach oben |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4704 Wohnort: ~/
|
Verfasst am: 20.03.2009, 01:09 Titel: |
|
|
Ich hätte das jetzt für alle Zahlen mit int(zahl/(2^bitnummer)) gerechnet.
Code: | print int(-29/(2^3)) ' -4
print -29 shr 3 ' -4 |
_________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
 |
ThePuppetMaster

Anmeldungsdatum: 18.02.2007 Beiträge: 1839 Wohnort: [JN58JR]
|
Verfasst am: 20.03.2009, 11:56 Titel: |
|
|
Code: |
Dim Wert as Integer
Wert = (Wert and (2 ^ 7)) or (Wert / 2)
|
Müsste funzen
Was gemacht wird is relativ einfach. Durch...
...wird das letzte Bit maskiert (and) und in die mit der SHR ...
... wieder or verknüpft.
Aber, bin mir grad nicht ganz sicher, da ich grad aufgestanden bin
MfG
TPM _________________ [ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ] |
|
Nach oben |
|
 |
volta
Anmeldungsdatum: 04.05.2005 Beiträge: 1876 Wohnort: D59192
|
Verfasst am: 20.03.2009, 15:48 Titel: |
|
|
Code: | Dim As Integer a =-245
Function shiftright (ByVal zahl As Integer,ByVal stellen As Integer) As Integer
If zahl <> 0 Then
While stellen > 0
If zahl < 0 Then zahl = zahl - 1
zahl = zahl \ 2
stellen = stellen - 1
Wend
End If
Function = zahl
End Function
'Test
print a, Bin(a,32)
print (a Shr 1), Bin((a Shr 1),32)
print (a Shr 2), Bin((a Shr 2),32)
print (a Shr 3), Bin((a Shr 3),32)
print (a Shr 4), Bin((a Shr 4),32)
print (a Shr 5), Bin((a Shr 5),32)
print shiftright(a,1)
print shiftright(a,2)
print shiftright(a,3)
print shiftright(a,4)
print shiftright(a,5)
a = -a
print a, Bin(a,32)
print shiftright(a,1)
print shiftright(a,2)
print shiftright(a,3)
print shiftright(a,4)
print shiftright(a,5)
print (a Shr 5),Bin((a Shr 5),32)
Sleep |
_________________ Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater. |
|
Nach oben |
|
 |
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
|