Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

SHR nachbauen oder die geschichte der signed bitverschiebung

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Heiko



Anmeldungsdatum: 28.07.2008
Beiträge: 101

BeitragVerfasst am: 20.03.2009, 00:15    Titel: SHR nachbauen oder die geschichte der signed bitverschiebung Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4704
Wohnort: ~/

BeitragVerfasst am: 20.03.2009, 01:09    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
ThePuppetMaster



Anmeldungsdatum: 18.02.2007
Beiträge: 1839
Wohnort: [JN58JR]

BeitragVerfasst am: 20.03.2009, 11:56    Titel: Antworten mit Zitat

Code:

Dim Wert as Integer
Wert = (Wert and (2 ^ 7)) or (Wert / 2)


Müsste funzen

Was gemacht wird is relativ einfach. Durch...
Code:
(Wert and (2 ^ 7))

...wird das letzte Bit maskiert (and) und in die mit der SHR ...
Code:
(Wert / 2)

... wieder or verknüpft.

Aber, bin mir grad nicht ganz sicher, da ich grad aufgestanden bin durchgeknallt


MfG
TPM
_________________
[ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
volta



Anmeldungsdatum: 04.05.2005
Beiträge: 1876
Wohnort: D59192

BeitragVerfasst am: 20.03.2009, 15:48    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
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.

 Impressum :: Datenschutz