Ich suche einen möglichst effizienten Code der aus einem Bitvektor die Anzahl der Einsen bestimmt. Also 10101011100 = 6 Einsen Die Größe des Bitvektors kann dabei (vor der Synthese) eingestellt werden, der Code sollte daher allgemein sein (for-Schleife o.ä).
überhaupt? Wenn du mit eine For-Schleife nicht zufreiden bist, von mir aus kannst du eine zweite Zähler werwenden. Gruß fredy
. Am Computer gibt es auf der unteresten Ebene der Speicherhardware, der CPU und der Dateien nur Zahlen. Dass manche Zahlen tatsächlich nur Zahlen sind und dass andere Zahlen für Buchstaben (oder Töne oder Grafiken usw.) stehen, ergibt sich nur durch die Art und Weise, wie diese Zahlen von der Software
dahinterstehende Codiersystem. Die erwähnten Packer nehmen kein Codiersystem an, denen reicht es, die Zahlen als Zahlen zu sehen. Also können sie alles packen. Als "binäre" Dateien bezeichnet man übrigens alle Dateien, die nicht Textdateien sind, d.h. eine Abfolge von Zahlen, die sich nicht durch eine Zeichentabelle
machen will. Darum ist es auch ein Studium. Da wird aussortiert. Und dass mann nicht "nur" Einsen schreibt ist auch klar. Ist teilweise schon pervers, wenn man mit ner 4,0 zur "besseren Hälte" gehört. Anderseits sind auch einige "Geschöpfe" mit dabei, die nur in der Vorlesung sitzten weil es draußen
oder netto ist. Der zukünftige Studierende dachte ja offensichtlich, das einfache nennen von zwei Zahlen ermöglicht es uns eine Aussage zu treffen. Aber er meint ja: >Eigentlich war meine Anfrage hier doch gar nicht so dumm wie ihr denkt.
Troll Blaubär kapiere ich garnichts, das > ist für mich nur eine Anreihung von Buchstaben und Zahlen. So sieht nunmal ein Assemblerquelltext aus. Schriebest Du nicht, daß Du genau so etwas willst?
7-Segment Anzeige. Du kannst auf Sie einreden, streicheln, anschreien, Sie wird dir aber nur eine Zahl anzeigen wenn du an den richtigen Pins ne Spannung anlegst. Wo man Spannung anlegen muss um bestimmte Zahlen darzustellen, bestimmen Bitmuster. Das gleiche macht der PC. Er kann auch nur 0/1. Für alles
Ach ja: Wie lautet denn die ID? Wenn die auch bloss aus Einsen besteht... Erstes Byte muss 0x10 (DS18S20) oder 0x28 (DS18B20) sein, sonst schon hier Mist.
40552102250001091 wenndir das zu primitiv ist, dann trotzdem danke für die mühe, ich weiß nicht wie man HEX zahlen ausgibt, für das was ich vorhabe, brauche es ja auch nicht. sondern nur zum überprüfen der ID.
Oder wenn nur genau ein Eingang 1 ist? Oder soll es, wie andere hier schreiben, 1 sein, wenn die Zahl an Einsen an den Eingängen ungerade ist? Welche Definition auch immer gemeint ist, wenn es nicht genau zwei Eingänge hat, sollte man es nicht xor nennen.
daran zu denken das es sehr wohl ohne diese Diskussion in jedem Fall möglich ist ZWEI mehrbittige Zahlen via XOR bitweise zu vergleichen, was sehr viel häufiger vorkommt. Ich kram zur Sicherheit aber schonmal meinen "Haarspalter der überlegenen Schnitthaltigkeit" +13 aus dem Rucksack. -wiebel
Wenn du schon zählst! In den 60zigern Anfang 70 wurden Schnelldurchgänge für politisch Interessierte höherer Kader durchgeführt. Ziel Ing. glaube auch Dip.Ing...kann das aber nicht genau sagen. ;-))
Alterkohorte in der Ex-DDR Da kann schon was im Anspruch nicht gleich sein, wenn man dazu die Zahlen der Hochschulzugangsberechtigungen nimmt: West 32 %, Ost 15 %, Stand 1992.
Signalübertragung kann meistens nur gleichstromfrei erfolgen. Also immer gleiche Anzahl Nullen und Einsen. Plus einge andere Randbedingungen. >will ich jetzt über IR laufen lassen .... Muss das dann moduliert werden >? Ja. >Ich bin verwirrt .... Kommt selbst bei Profis oft genug vor. ;-)
@Falk: >Kommt selbst bei Profis oft genug vor. ;-) Dazu zähle ich mich jetzt noch nicht wirklich obwohl doch schon einige Projekt mir <eigenlob> ganz gut gelungen sind </eigenlob> und dieses Forum auch einiges dazu beigetragen hat ! Ich dachte die "Null" heißt
4 3 2 1 0 M ( x ) = a ⋅ x + b ⋅ x + c ⋅ x + d ⋅ x + e ⋅ x + f ⋅ x Dabei genügt es, die Terme mit Einsen anzugeben. Für die Bitfolge 100101 erhält man dann zum Beispiel: 5 4 3 2 1 0 5 2 0 5 2 0 M(x) = 1⋅ x + 0 ⋅ x + 0 ⋅ x + 1⋅ x + 0 ⋅ x + 1⋅ x = 1⋅ x + 1⋅ x + 1⋅ x = x + x + x Die Prüfbits werden durch
Doch ich verstehe den Ablauf nicht. In wait1 kommt man auf jeden Fall. Dann wird temp2 voller einsen geschrieben und man gelangt in wait2. Es wird dann als erstes von temp2 die eins subtrahiert. brne wait 2, was dann folgt, heißt meines Wissens, dass er zur Marke wait2 springt, falls die Subtraktion
In diesem Fall zählst du 255 x 255. Wenn du nacheinander zählst sind es nur 2 x 255. Die Verschachtelung musst du sowieso auf die geforderte Verzögerung anpassen, entweder Taktzyklen berechnen oder per Debugger und Stopwatch
Syntheseergebnis zu optimieren. Das Ergebnis war, das das Synthesetool schon die optimalste Lösung findet. einsen im Vektor zählen http://www.mikrocontroller.net/topic/34231 Weils so schön war : Einsen Zählen II http://www.mikrocontroller.net/topic/34250 MfG Holger
klar), aber im Endeffekt kann man die Bits der Synthesis nach mit über 200 MHz auf einem Virtex2 zählen und irgendwo aufaddieren (wenn ich mich nicht irre). Im Anhang ist die pdf mit der Waveform, wollte keine .09k BMP Datei uppen.
das Einerkomplement ins Spiel. Mit COM R1 wird der Inhalt eines Registers bitweise invertiert, aus Einsen werden Nullen und umgekehrt. So wird aus 1 die Zahl 254, aus 2 wird 253, usw. Anders ist die Erzeugung einer negativen Zahl aus einer Posi- tiven. Hierbei wird das Vorzeichenbit (Bit 7) umgedreht bzw
gehören. Vielleicht findet ihr ja fehler die ich nicht finde. Komisch ist auch das wir auch nur einsen empfangen wenn gar nichts am port liegt. Gruß
sich aber ein frage auf. In der von dir genannten seite gibt es eine funktion zum lesen von 8-Bit zahlen und eine zum lesen von 9-Bit zahlen. Allerdings verstehe ich nicht warum die temperatur auf diese weise ausgelesen wird: [c]RST=1; Put1620byte(0xAA); /* read temp command
die ganzen Typenstrukturen etc. die man in VHDL machen kann, die dann aber doch auf ganz normale Einsen und Nullen umgesetzt werden müssen. Ausserdem fand ich das ganze Aufsetzen bei VHDL (mit den Bibliotheken und was es alles gibt) als Anfänger ziemlich bescheiden. Ist zwar toll, wenn es an grosse
die ganzen Typenstrukturen etc. die man in VHDL machen >kann, die dann aber doch auf ganz normale Einsen und Nullen umgesetzt >werden müssen. KANN, man muss aber nicht. Schon gar nicht als Anfänger. >Ausserdem fand ich das ganze Aufsetzen bei VHDL (mit den Bibliotheken >und was es alles gibt)
hier solch eine fertige einheit liegen.z.Z. schieb ich von einem baustein den bcd-code einzelner zahlen rein,um zu testen ob das teil funzt. geht auch.habe 6 stück der 7 segmentanzeigen und wäre für eine uhr genial.
einfach wenn das so ohne weiters ginge. ich dachte erst der bcd-code wird in vorm von nullen und einsen heraus-getakte wie: 0001 0011 0010 0011 ......und ich könnt den takt vom ds1307 als takt zum einlesen für die mc14015 verwenden. aber danke erstmal ,werde mich im forum mal umschauen. mike
ja nicht zu sein. wie wäre es statt dessen mit einer zustandsmaschine: 0: ruhezustand 1: normal zählen 2: beim nächsten takt zählen dann --->3 3: steuereingang low -->4 sonst -->3 4: steuereingang low -->4 sonst -->2 dann wäre dieser steuereingang gewissermaßen ein 2. takt für den zähler. takt
synthesefähiger code" gefunden Ich habe mal versucht etwas umzusetzen: kurze beschreibung: 19-bit zähler mit einem clk eingang und einem para-clk. dieser befördert die maschine nacheinander in 3 zustände (siehe oben) mode1 startet das zählen mit clk, mode2 das zählen mit clk2 module modul(adr, clk
1) ~ ist das Einser-Komplement. Alle Bits umdrehen. Aus 0 wird 1 und umgekehrt. Auf Assembler-Ebene heist das COM Der ganze Klammerausdruck ist also key_state alle Bits umdrehen mit key_mask
Portd.3 = 1 :::::::::::::::: :::::::::::::::: geber: If Pind.3 = Pind.2 Then Decr Geber_zahl_haupt Else Incr Geber_zahl_haupt End If return
du noch nicht gesagt, was an deinen realen Messwerten schlecht ist. Die mit dem offenen Eingang zählen nicht. Ein offener Eingang ist ein Zufallszahlengenerator. Ansonsten: Da wirst du wohl deine Beschaltung des Sensors verändern müssen.
Spannung am Pin entspricht. Der Sensor gibt Dir den Messwert als zeitliche Folge von Nullen und Einsen raus. Das passt nicht zusammen. Gruss, Thorsten
(ACSR & (1<<5))) {PORTB=0b01111111;} else {PORTB=0b1011111;} Ist das 1:1 kopiert Dein Code? Dann zähl mal die Nullen und Einsen in dem else-Block... Dann weißt Du auch warum PORTB.7 immer Low-Pegel hat...
sich vermeiden, wenn man immer die (1 << IRGENDWAS)-Schreibweise benutzt. Wenn von 8 Nullen und Einsen eine fehlt, dann muss man schon genau hinsehen, um den Fehler zu finden. Hättest Du oben geschrieben [C] if ((ACSR & (1 << ACO))) PORTB = ~(1 << PB7); else PORTB = ~(1 << PB6); [/C
die von vornherein mehr Hirngespinnst sind aber die man der Geschäftsleitung schöngeredet hat. Da zahlen am ende die Arbeiter die Zeche für die Fehlplanungen. Wie Gast2 schon sagte. Der Mensch zählt und nicht das Papier. Solange in diesem Land in bester US-Manier nur Quersummen von Zeugnisnoten
viel Zeit!!! Als Selbständiger Unternehmer mit einer LowLevel-Schulbildung immer! Nur die Einser-Absolventen, die sich als Drangestellte bei eben diesen Unternehmern quälen müssen, haben keine Zeit.
(1<<CS11) |(0<<CS10) sonst muss man erst im Datenblatt blättern und umständlich Nullen und Einsen abzählen.
Pinbelegung im Atmega8 Datasheet falsch ist. Wenn ich im Simulator für Counter0 den PIN PB0 zum externen zählen benutze, und für Timer1 den PIN PB1 funktioniert es. Im Datasheet steht PIN PD4 für Timer0 und PIN PD5 für Timer1. Kann das jemand bestätigen? Gruß Andy
Länge eines solchen Paketes ist bei allen gleich lang. Allerdings ist das LowLevel zwischen zwei einsen kürzer als bei einer 0. Dadurch kommen auch die unterschiedlichen Längen nach meiner Überlegung zu stande. Nun also die Frage, hat jemand ne Idee wie das ganze noch Verschlüsselt sein könnte (mir
man is das ein Krampf wenn man mal ein Bildbearbeitungsprogramm sucht was nur ein paar Linien und Zahlen einfügen kann :)) ) Ich hoffe man kann etwas erkennen :) Was haltet ihr von der Idee? Ich bin mal guter zuversicht das ich nun ein Stückchen weiter auf dem richtigen Weg bin. Gruß Micha
, Besserwisserei. Das findet sich bei jedem Notenschnitt >Jede Abteilung verträgt auch einen Einser-Absolventen. Aber zwanzig auf >einem Haufen, das ist die Hölle. Jedenfalls in einer >Standard-Industrieeinheit. Viel zu kurz gesprungen. Wenn man "Einser-Absolventen" mit "Primadonna" austauscht
als Schalter mit Pulllup wiederständen festlegen ; (Dip 10 Schalter 1-8) ldi temp,0b11111111 ; 8 Einsen in Universalregister out PORTC,temp ; an Datenrichtungsregister clr temp; Universalregister löschen out DDRC, temp ; 8 Nullen an Datenrichtungsregister ; Port D Rote LED LED festlegen DMX einrichten
das Einerkomplement ins Spiel. Mit COM R1 wird der Inhalt eines Registers bitweise invertiert, aus Einsen werden Nullen und umgekehrt. So wird aus 1 die Zahl 254, aus 2 wird 253, usw. Anders ist die Erzeugung einer negativen Zahl aus einer Posi- tiven. Hierbei wird das Vorzeichenbit (Bit 7) umgedreht bzw
Datei TEST1.LST aus. ; Register definieren ; ; Dieses Register wird für die Zwischenspeicherung der Zahlen ; verwendet. Mit dem Befehl .DEF kriegt eins der 32 8-Bit-Register ; einen Namen (hier: mp), den man sich einfacher merken kann als ; R16. Ausserdem kann man einfacher Register verlegen, wenn man sie
R1 ; Prüfe ob noch Bits zu multiplizieren or rmp,R2 ; Irgendein Bit Eins? brne fpconv10m2 ; Noch Einsen, mach weiter ret ; fertig, kehre zurück fpconv10m2: lsr R2 ; Schiebe MSB nach rechts (teilen durch 2) ror R1 ; Rotiere LSB rechts und setze Bit 7 brcc fpconv10m3 ; Wenn das niedrigste Bit eine 0 war, ; dann überspringe den Additionsschritt add R7,R3 ; Addiere die Zahl in R6:R5:R4:R3 zum Ergebnis adc R8,R4 adc R9,R5 adc R10,R6 fpconv10m3: lsl R3 ; Multipliziere R6:R5:R4:R3 mit 2 rol R4 rol R5 rol R6 rjmp fpconv10m1 ; Wiederhole für das n?chste Bit ; ; Runde die Zahl
ungerade sreg(25)) xor sreg(26)) xor sreg(27)) xor sreg(28)) -- Zahl logischer Einsen! or (sreg(24) and (sreg(23) or sreg(22))) -- Fehler durch nicht mögliche Kombinationen or (sreg(27) and sreg(26))) -- Fehler durch nicht mögliche Kombinationen or ----------Kontrolle
cntr = 0x60 waitfreekey: ;Wartet, bis alle Tasten losgelassen sind. clr cntr nook: sts _temp, cntr ;Zähler retten rcall outlook ;Hier prüfen, ob sich inzw. etwas relewantes ereignet hat lds cntr, _temp ;Zähler Restaurieren in taste, PIND cpi taste, 0b00111111 ;Für jeden Knopf ein Einser (davor evtl. AND-en
Prüfbit's zu dem empfangenem Wert passt. Dabei muss | | das empfangene Parity-bit die Anzahl der Einsen im empfangenem Byte auf eine gerade | | Zahl ergänzen. | | | | INPUT: data --> detektierte Daten aus dem Synchronisierungssignal | | INPUT: pbit --> Wert des detektierte Parity-Bit | | OUTPUT: -->
R1 ; Prüfe ob noch Bits zu multiplizieren or rmp,R2 ; Irgendein Bit Eins? brne fpconv10m2 ; Noch Einsen, mach weiter ret ; fertig, kehre zurück fpconv10m2: lsr R2 ; Schiebe MSB nach rechts (teilen durch 2) ror R1 ; Rotiere LSB rechts und setze Bit 7 brcc fpconv10m3 ; Wenn das niedrigste Bit eine 0 war, ; dann überspringe den Additionsschritt add R7,R3 ; Addiere die Zahl in R6:R5:R4:R3 zum Ergebnis adc R8,R4 adc R9,R5 adc R10,R6 fpconv10m3: lsl R3 ; Multipliziere R6:R5:R4:R3 mit 2 rol R4 rol R5 rol R6 rjmp fpconv10m1 ; Wiederhole für das n?chste Bit ; ; Runde die Zahl
R1 ; Prüfe ob noch Bits zu multiplizieren or rmp,R2 ; Irgendein Bit Eins? brne fpconv10m2 ; Noch Einsen, mach weiter ret ; fertig, kehre zurück fpconv10m2: lsr R2 ; Schiebe MSB nach rechts (teilen durch 2) ror R1 ; Rotiere LSB rechts und setze Bit 7 brcc fpconv10m3 ; Wenn das niedrigste Bit eine 0 war, ; dann überspringe den Additionsschritt add R7,R3 ; Addiere die Zahl in R6:R5:R4:R3 zum Ergebnis adc R8,R4 adc R9,R5 adc R10,R6 fpconv10m3: lsl R3 ; Multipliziere R6:R5:R4:R3 mit 2 rol R4 rol R5 rol R6 rjmp fpconv10m1 ; Wiederhole für das n?chste Bit ; ; Runde die Zahl
R1 ; Prüfe ob noch Bits zu multiplizieren or rmp,R2 ; Irgendein Bit Eins? brne fpconv10m2 ; Noch Einsen, mach weiter ret ; fertig, kehre zurück fpconv10m2: lsr R2 ; Schiebe MSB nach rechts (teilen durch 2) ror R1 ; Rotiere LSB rechts und setze Bit 7 brcc fpconv10m3 ; Wenn das niedrigste Bit eine 0 war, ; dann überspringe den Additionsschritt add R7,R3 ; Addiere die Zahl in R6:R5:R4:R3 zum Ergebnis adc R8,R4 adc R9,R5 adc R10,R6 fpconv10m3: lsl R3 ; Multipliziere R6:R5:R4:R3 mit 2 rol R4 rol R5 rol R6 rjmp fpconv10m1 ; Wiederhole für das nächste Bit ; ; Runde die Zahl
behandeln reti ; sonst Timer0 Routine verlassen counts: clr tmp ; tmp wieder auf null setzen cpi zahler,65 ; alle LED's durch? breq LED_STOP ; sprung nach unten mov leds, zahler ; Zähler in Leds kopieren mov shift_cnt,zahler ; Zählerkopie nach shift_cnt für die multiplexer(154er) andi leds,15 ; nur die
das Einerkomplement ins Spiel. Mit COM R1 wird der Inhalt eines Registers bitweise invertiert, aus Einsen werden Nullen und umgekehrt. So wird aus 1 die Zahl 254, aus 2 wird 253, usw. Anders ist die Erzeugung einer negativen Zahl aus einer Posi- tiven. Hierbei wird das Vorzeichenbit (Bit 7) umgedreht bzw
, aber nicht von Bit 7 gibt. Andernfalls wird OV gelöscht. Bei der Addition vorzeichenbehafteter Zahlen ist dadurch zu erkennen, ob die Addition zweier positiver Zahlen ein negatives oder die Addition zweier negativer Zahlen ein positives Ergebnis ergab (d.h. der Wertebereich der Vorzeichenbehafteten
, aber nicht von Bit 7 gibt. Andernfalls wird OV gelöscht. Bei der Addition vorzeichenbehafteter Zahlen ist dadurch zu erkennen, ob die Addition zweier positiver Zahlen ein negatives oder die Addition zweier negativer Zahlen ein positives Ergebnis ergab (d.h. der Wertebereich der Vorzeichenbehafteten
das Einerkomplement ins Spiel. Mit COM R1 wird der Inhalt eines Registers bitweise invertiert, aus Einsen werden Nullen und umgekehrt. So wird aus 1 die Zahl 254, aus 2 wird 253, usw. Anders ist die Erzeugung einer negativen Zahl aus einer Posi- tiven. Hierbei wird das Vorzeichenbit (Bit 7) umgedreht bzw
; * Mit Timer test der Befehlszyklen Anzahl möglich, wenn Teiler 1 * ; * Einzelschritt Modus und Zähler Timer Low beobachten * ; ****************************************************************** timer1: ;*** Hilfs Delay um Zeit genau zu rechnen temp2 = alle Instructions ;*** gerechnenter Wert durch
absacc.h> unsigned int g_count=0; // Dieser Wert wird vom Timer 15000mal in der Sekunde //erhöht ( ms zählen ) unsigned int g_count2=0; // Dieser Wert wird vom Timer erhöht und ermöglicht //dem INT1 ein Timing struct dcf { // DCF Signal dekodiert unsigned char sec; unsigned char minute; unsigned char stunde
entweder die Zahl 255 oder die (negative) Zahl -1 dargestellt. Schauen wir uns mal die Zahl 255 näher an, die Sache mit den negativen Zahlen kommt später. Dieser Text könnte Leuten nützlich sein, die sich für Mikrocontroller