Was ist das absolute minimum ein Programmierer sollte wissen, über binäre zahlen und rechnen?
Obwohl ich weiß, dass die grundlegenden Konzepte für die binäre Darstellung, ich habe noch nie wirklich geschrieben code, der verwendet binäre Arithmetik und Operationen.
Ich will wissen,
-
Was sind die grundlegenden Konzepte, die alle
Programmierer wissen sollten über binäre
zahlen und rechnen ? und -
In dem, was die "praktischen" Möglichkeiten können binäre
Operationen werden in der Programmierung verwendet. Ich
habe gesehen, einige "Coole" Verwendung von shift
Betreiber und XOR usw. aber gibt es
einige typische Probleme, bei denen mit binären
Operationen ist eine offensichtliche Wahl.
Geben Sie bitte Verweise auf gutes Referenz-material.
- Mann, die Zeiten ändern sich. In meinem Kopf gibt es 4 rote LEDs. Wenn ich sehe, eine Ziffer oder die Buchstaben a bis f, die richtigen Lampen Leuchten.
- Sie sollten in der Lage zu zählen bis zu einer million und zurück, in binäre... OMG, ist diese Frage (und die Antworten) ein Witz? Ist heute 1. April?
- Es gibt 10 Arten von Menschen auf der Welt, diejenigen, die verstehen binäre und diejenigen, die nicht.
- Ich bin nicht sicher, es ist von nutzen, jetzt, aber es verwendet, um zu beweisen praktisch zu wissen, dass Ein und hatten 5 Links - /rechts-switched-bit-Muster (1010 0101), ebenso wie C und 3 (1100 0011). Sie wusste, wenn Sie oder hatte Sie oder hat Sie Sie bekommen würde, 15. Sie wusste, wie Verschiebung der einen zur anderen, so dass Sie wusste, dass der Multiplikator zwischen den beiden. Mit einem physischen Gefühl für Binär-und hex gemacht alles gehen ein wenig glatter. Gemacht die zahlen konkreter.
- Das absolute minimum, dass ein Programmierer wissen sollte, über binäre ist
LONG_LONG_MIN
natürlich.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie die Entwicklung von lower-level-code, ist es wichtig, dass Sie verstehen die binäre Darstellung der verschiedenen Arten. Diese finden Sie besonders nützlich, wenn Sie entwickeln embedded-Anwendungen, oder wenn Sie sind den Umgang mit low-level-übertragung oder Speicherung von Daten.
Dass gesagt wird, ich glaube auch, dass das Verständnis, wie die Dinge funktionieren auf einem niedrigen Niveau ist nützlich, auch wenn Sie arbeiten auf ein viel höheres Niveau der Abstraktion. Ich habe beispielsweise festgestellt, dass meine Fähigkeit zur Entwicklung effizienter code ist verbessert durch das Verständnis, wie die Dinge dargestellt und manipuliert auf einem niedrigen Niveau. Ich habe Sie auch so gefunden Verständnis nützlich in der Arbeit mit den Debuggern.
Hier ist eine kurze Liste der binären Darstellung von Themen für die Studie:
Endlich...hier ist eine schöne Reihe von Bit Twiddling Hacks Sie vielleicht nützlich finden.
Es sei denn Sie arbeiten mit niedrigeren level " - Sachen, oder versuchen, intelligent zu sein, Sie nie wirklich zu spielen, mit binären Sachen.
Ich habe durch einen computer science Grad, und ich habe noch nie verwendet, jede der binären arithmetischen Sachen, die wir gelernt, da mein Kurs beendet.
Haben eine squizz hier: http://www.swarthmore.edu/NatSci/echeeve1/Ref/BinaryMath/BinaryMath.html
Müssen Sie verstehen-bit-Masken.
Viele Sprachen und Situationen erfordern die Verwendung von bit-Masken, zum Beispiel Fahnen in den Argumenten oder configs.
PHP hat seine Fehler Ebene, die du kontrollierst, mit bit-Masken:
Oder einfach nur überprüfen, ob ein int ist, oder ungerade:
Ich glaube, ein Grund-know-hows auf binäre Operationen line UND, ODER, XOR, NICHT nützlich sein würde als die meisten Programmiersprachen unterstützen diese Operationen in form von bit-Weise Operatoren.
Diese Vorgänge sind auch in der Bildverarbeitung und anderen Bereichen in Grafiken.
Eine wichtige Anwendung der XOR-operation, die ich denken kann, ist Parity-check. Überprüfen Sie diese http://www.cs.umd.edu/class/sum2003/cmsc311/Notes/BitOp/xor.html
cheers
Folgenden sind Dinge, die ich regelmäßig zu schätzen wissen, in meinem ganz herkömmlichen Programmierung Arbeit:
Wissen, die Potenzen von 2 bis 2^16, und wissen, dass 2^32 ist etwa 4,3 Milliarden Euro. Sie gut genug kennen, so dass, wenn Sie sehen die Anzahl 2147204921 pop-up irgendwo Ihr Erster Gedanke, "hmm, das sieht ziemlich nah an 2^31" - das ist ein sehr effektives Modul für deinen bug-radar.
In der Lage sein zu tun, einfache Arithmetik; z.B. konvertiert eine hexadezimale Ziffer, um ein nybble und zurück.
Haben eine vage Idee, wie floating-point-zahlen dargestellt werden, in binäre.
Verstehen standard-Konventionen, die Sie stoßen könnten in anderer Leute code bezogen, um bit-twiddling (Flaggen Holen ORed zusammen, um zusammengesetzte Werte und prüft, ob ein set, shift-Operatoren packen und entpacken von zahlen in verschiedenen bytes XOR etwas zweimal, und Sie erhalten die gleichen etwas zurück, dass Art der Sache.)
Weiter wissen ist meist mit Soße, es sei denn, Sie arbeiten mit erheblichen performance-Einschränkungen oder-nicht andere, weniger gemeinsame Arbeit.
Auf dem absoluten minimum, Sie sollten in der Lage sein zu implementieren, die eine bit-Maske mit einer Lösung. Die Aufgaben in Zusammenhang mit der bit-Maske Operationen sollten sicherstellen, dass Sie zumindest zu verstehen, mit binären auf einer oberflächlichen Ebene.
Aus der Spitze von meinem Kopf, hier sind einige Beispiele, wo ich verwendet habe, bitweise Operatoren zu tun, nützliche Dinge.
Einem Stück javascript-Code, benötigt eine von diesen "check all" - Boxen war etwas entlang diesen Linien:
Berechnen Sie die Eckpunkte eines Würfels.
Zeichnen eines Sierpinski-Dreiecks
Suche nach dem nächsten Potenz von zwei
Überprüfen, ob eine Zahl eine Potenz von zwei
Die Liste kann weiter und weiter gehen, aber für mich sind (außer für Sierpinksi) Beispielen aus dem Alltag. Einmal wirst du es verstehen und mit ihm zu arbeiten, obwohl, Sie stoßen werden es in mehr und mehr Orten, wie die Ecken eines Würfels.
Du nicht speziell erwähnen (auch nicht ausschließen!-) floating point Binär-zahlen und rechnen, damit ich nicht die Gelegenheit verpassen, flog einer meiner Lieblings - Artikel jemals (ernsthaft: manchmal wünschte ich, ich könnte die übergabe eines strengen quiz auf es ein pre-req von Arbeit als Programmierer...;-).
Das wichtigste, was jeder Programmierer wissen sollte, über binäre zahlen und Arithmetik : Jede Zahl in einem computer dargestellt wird, eine Art von Binär-Codierung, und alle Arithmetik auf einem computer Binär rechnen.
Die Folgen sind vielfältig:
und mehr. Dies ist, was Sie brauchen, zu wissen, selbst wenn Sie niemals eine bitweise xor, oder nicht, oder was auch immer in Ihrem Leben. Sie laufen immer noch in diese Dinge.
Das hängt wirklich von der Sprache, die Sie verwenden. Neuere Sprachen wie C# und Java abstract die binäre Darstellung von dir-das macht das arbeiten mit Binär-schwierig und ist meist nicht der beste Weg, Dinge zu tun, die sowieso in diesen Sprachen.
Mittleren und niedrigen level-Sprachen wie C und C++, jedoch verlangen, dass Sie durchaus Verständnis ein wenig darüber, wie die Nummern gespeichert sind darunter-vor allem hinsichtlich der endianness.
Binäre wissen ist auch nützlich, wenn die Umsetzung einer cross-Plattform-protcol einiger Sortieren .... zum Beispiel auf x86-Rechnern, die byte-Reihenfolge ist little-endian. aber die meisten Netzwerk-Protokolle wollen big-endian-zahlen. Daher müssen Sie feststellen, dass Sie brauchen, um die Konvertierung für die Dinge glatt gehen. Viele RFCs, wie dieser -> http://tools.ietf.org/html/rfc4648 benötigen binäre wissen zu verstehen.
Kurz gesagt, es ist abhängig davon, was Sie zu tun versuchen.
Billy3
Es praktisch zu wissen, die zahlen 256 und 65536. Es ist praktisch zu wissen, wie Zweierkomplement die negativen zahlen arbeiten.
Vielleicht werden viele binäre. Ich noch benutze es ziemlich oft, aber vielleicht aus Gewohnheit.
Gut vertraut mit bitweise Operationen sollten Sie mehr bequem mit der booleschen algebra, und ich denke, das ist wichtig für jeden Programmierer-Sie möchten schnell in der Lage, die komplexe Logik Ausdrücken.
Absolute minimum ist, dass die "2" ist nicht eine binäre Zahl und 10b ist kleiner als 3.
Wenn Sie niemals low-level-Programmierung (wie C in embedded systems) nie einen debugger verwenden, und nie haben, um die Arbeit mit reellen zahlen, dann nehme ich an, Sie könnten durch zu bekommen, ohne zu wissen, binäre. Aber zu wissen, binäre machen Sie eine stärkere Programmierer, auch wenn indirekt.
Sobald Sie Wagen, in jene Bereiche, die Sie benötigen, zu wissen, binäre (und seine `Schwester" Basis, hexadezimal). Ohne es zu wissen:
Programmierung eingebetteter Systeme unmöglich wäre.
Debuggen wäre schwer, weil man nicht weiß, was Sie bei der Suche im Speicher.
Numerische Berechnungen mit Dezimalzahlen würde Ihnen Antworten, die Sie nicht verstehen.
Habe ich gelernt, twiddle-bits zurück, wenn c und asm wurden immer noch für "mainstream" - Programmierung. Obwohl ich nicht mehr viel Verwendung für dieses wissen, vor kurzem habe ich es benutzt zum lösen eines realen business-problem.
Verwenden wir ein fax-service, sendet eine Nachricht an uns zurück, wenn das fax gesendet wurde oder fehlgeschlagen, wenn x die Anzahl der Wiederholungen. Die einzige Möglichkeit, die ich hatte, zu identifizieren, das fax war eine 15-Zeichen-Feld. Wir konsolidieren wollten diese in eine URL für alle unsere Kunden. Bevor wir konsolidiert, mussten wir fit in diesem Bereich war der FaxID PK (32-bit int) Spalte, die wir gerade geschickt hat, als ein string.
Nun hatten wir zur Identifikation des Kunden (a 4 character code) und der Datenbank (32-bit int), die sich unter den Kunden. Ich war in der Lage, dies zu tun mit base-64-Codierung. Ohne Verständnis für die binäre Darstellung von zahlen und Zeichen, die ich wahrscheinlich nie hätte auch gedacht, diese Lösung.
Einige nützliche Informationen über die Anzahl system.
Binary | base 2
Hexadezimal - | base-16
Dezimal | base 10
Oktal | base 8
Diese sind die häufigsten.
Umwandlung ist faily einfach.
112 base 8 = (1 x 8^2) + (2 x 8^1) + (4 x 8^0)
74 base 10 = (7 x 10^1) + (4 x 10^0)
Den UND, ODER, XOR, and etc. eingesetzt in der Logik-Gatter. Suche Boolesche algebra, so etwas lohnt sich die Zeit zu wissen.
Sagen zum Beispiel, Sie haben 11001111 Basis 2, und Sie möchten, zu extrahieren, die letzten vier nur.
Wahrheitstabelle für UND:
Können Sie 11001111 base 2 UND 00111111 Basis 2 = 00001111 base 2
Es gibt viele Ressourcen im internet.