Español
Experimente

Bitleisten y BiBit-Leisten

 

p.specht

Bitleisten (aquí en purem XProfan11) debería como speicherplatz-sparende Versión de massenhaften 2-Zustands-Guardar, etwa en Realisierung uno schnellen Primzahlenfilters* oder el indexierten Löschvermerk uno Datenbank dienen.

Das nachfolgende Machwerk es una allererster Intento dazu, es aber bastante langsam. Für el Praxis wären flottere Lösungen, etwa con Bereichsvariablen y por Ensamblador oder igual por Windows-API gefragt.
Título de la ventana " Simulation de bit-Leisten mittels Long&-Arrays (beta)"
' Copyleft (CL) 2012-12 by P. Specht; OHNE GEWÄHR!
declarar z$,z&,idx!,max!,dw&[],dwx&,bw&,bw1&,bitImLong&
huch:
cls:font 2:color 0,15
max!=fetch(" Höchster vorkommender bit-Index [de 0]?: ",max!)

if max!<0:fehler():Imprimir " Negative Indizes dzt. no vorgesehen! *** "

    max!=0:waitinput :goto "huch"

endif

if max!>2147483615:fehler():Imprimir " Max.Index dzt.2^31-32-1= 2147483615, ca. INT()"

    max!=2147483615:waitinput :goto "huch"

endif

z&=int(max!/32+1):setsize dw&[],z&
Imprimir " Dazu fueron ";z&;" Long&-Variables alloziert."
imprimir " Probe: 32*";z&;"=";int(z&*32);" bit":imprimir

REPEAT

    otra vez:
    idx!=fetch(" bit-Index: ",idx!)

    if idx!>max!

        fehler()
        imprimir " Obergrenze ";int(max!);" überschritten! *** \n"
        color 0,15:idx!=max!:goto "nochmal"

    elseif idx!<0:fehler():imprimir " Negative Indizes son no vorgesehen! *** \n"

        color 0,15:idx!=0:goto "nochmal"

    endif

    dwx&=int(idx!/32)
    bitImLong&=int(idx!-dwx&*32)
    bw&=@TestBit(dw&[dwx&],bitImLong&)
    z$=" Long&["+str$(dwx&)+"] : bit["+str$(bitImLong&)+"] ?= "
    bw1&=fetch(z$,bw&)
    bw1&=(bw1&<>0)

    if bw&<>bw1&: dw&[dwx&]=setbit(dw&[dwx&],bitImLong&,bw1&)

        color 1,15:locate %csrlin-1,31
        imprimir ":bit[";int(idx!);"] es nun ";bw1&:color 0,15

    endif

    imprimir

    if idx!>=max!

        idx!=max!
        imprimir " *** Warnung: Obergrenze erreicht! ***"

    más

        idx!=int(idx!)+1

    endif

ENDWHILE

FIN

proc fetch :parámetros txt$,idx! :declarar z$

    imprimir txt$;int(idx!):locate %csrlin-1,len(txt$)+1:input z$
    caso %csrlin>19:cls
    volver if(z$="",idx!,val(z$))

ENDPROC

proc fehler

    color 12,15
    imprimir " *** FEHLER:";
    sound 500,100

ENDPROC


Anmerkung: Mit Floating-Punto-Ganzzahlen podría uno en +/- 9007199254740992 fehlerfrei bits indexieren, - nimmt al Vorzeichenbit auch todavía con, entonces va el Zona de 0 - 18 014 398 409 481 984. Theoretisch podría uno así una Eratosthenes-Filter para ca. el ersten 720 Bio. Primzahlen aufbauen (Geschätzte Primzahldichte algo bajo 4%) - allerdings: Wo speichern wir el 2048 Terabyte el Bitleiste? (Von el Rechenzeit nada a reden...). Selbst si wir Runlenght-Encoden es el todavía siempre gewaltig...
 
Computer: Gerät, daß es in Mikrosekunden erlaubt, 50.000 Fehler zu machen, zB 'daß' statt 'das'...
16.06.2021  
 




p.specht

Bibit-Leiste
=========
Für una Rechtecksmatrix-InPlace-Transposition fue un Status-Doppelbitleiste
(Bibit-Kamm) con el möglichen Werten {0,1,2,3} erforderlich. Selbstverständlich muß uno auch el en el Praxis todavía clever beschleunigen, aber el Principio klappt ya veces.

El Bedienung des Machwerks es algo gewöhnungsbedürftig (aber letztendlich se el ohnehin el Computer hacer): Einzugeben son stets el Index-Valor, Luego se el Ist-Zustand des relevanten Doppelbits adecuado y kann por el neuen Zustand (0..3) ersetzt voluntad.

Título de la ventana "Bibit-Leiste de 2él-Bitgruppen z.B. para Bearbeitungsstatus-Werte 0,1,2,3"
'CopyLeft (CL) 2012-12ff by P. Pájaro carpintero. Jedwede Haftung es ausdrücklich ausgeschlossen!
randomize:font 2:Cls rnd(8^8)
Declarar max&,idx&,wert&,lx&,bbiL&,en$
Imprimir " Max.Bibit-Indexwert = ";:input max&
Declarar bb&[max&/16]
Imprimir " Anzahl benötigter Longs: ";int(max&\16+1)
bb&[0]=rnd(4294967295):imprimir " Test bb&[0]:Bibit-Idx:15__0: ";bin$(bb&[0])

Repeat

    imprimir "\n Bibit-Index: ";idx&,",",:input idx&
    lx&=idx&\16:imprimir " bb-idx=";lx&
    bbiL&=(idx& mod 16)*2:imprimir " bbiL&=";bbiL&
    wert&=(bb&[lx&] & (3<<bbiL&))>>(bbiL&)
    imprimir "  Ist:",wert&," Soll:",:input en$

    if en$>""

        wert&=val(en$) mod 4
        bb&[lx&]=bb&[lx&] & (4294967295-(3<<bbiL&)) | (wert&<<bbiL&)
        wert&=(bb&[lx&] & (3<<bbiL&))>>bbiL&
        locate %csrlin-1,30:imprimir "... es nun",wert&

    endif

until 0

End
 
Computer: Gerät, daß es in Mikrosekunden erlaubt, 50.000 Fehler zu machen, zB 'daß' statt 'das'...
16.06.2021  
 



Zum Experiment


Título del Tema, max. 100 Signo.
 

Systemprofile:

Kein Systemprofil creado. [anlegen]

XProfan:

 Contribución  Font  Smilies  ▼ 

Bitte registro en una Contribución a verfassen.
 

Tema opciones

1.473 Views

Untitledvor 0 min.
p.specht18.09.2021
Uwe ''Pascal'' Niemeier23.08.2021
Thomas Zielinski13.08.2021
Ernst21.07.2021
Más...

Themeninformationen

Dieses Thema ha 1 subscriber:

p.specht (2x)


Admins  |  AGB  |  Applications  |  Autores  |  Chat  |  Política de Privacidad  |  Descargar  |  Entrance  |  Ayuda  |  Merchantportal  |  Pie de imprenta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Juegos  |  Búsqueda  |  Support

Ein Projekt aller XProfan, el lo son!


Mi XProfan
Privado Noticias
Eigenes Ablageforum
Temas-Merkliste
Eigene Beiträge
Eigene Temas
Zwischenablage
Cancelar
 Deutsch English Français Español Italia
Traducciones

Política de Privacidad


Wir uso Cookies sólo como Session-Cookies wegen el technischen Notwendigkeit y en uns hay no Cookies de Drittanbietern.

Wenn du hier en unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung de Informationen en unseren Cookies en XProfan.Net a.

Weitere Informationen a unseren Cookies y dazu, como du el Kontrolle darüber behältst, findest du en unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Yo möchte no Cookie