lefg 276 Geschrieben 23. Januar 2013 Melden Teilen Geschrieben 23. Januar 2013 (bearbeitet) Hallo werte Gemeinde, im Folgenden gibt mir einiges inmmer noch Rätsel auf zu set /a: () - Gruppierung ! ~ - unäre Operatoren * / % - arithmetische Operatoren (% bedeutet Modulo) + - - arithmetische Operatoren << >> - logische Verschiebung & - bitweise UND ^ - bitweise exklusives ODER | - bitweise ODER = *= - Zuordnung /= %= += -= &= ^= |= <<= >>= Die Anwendung von set /a mit der Klammerrechnung ist ist mir klar, auch Addition, Subtraktion, Mulitplikation, Division und Modulo. Ich rätsele aber, wie die unären oder monären Operationen anzuwenden sind, die logischen Verschiebungen, die bitweisen Vernüpfungen. Weiter ist mir die Anwendung einiger Zuordnungen unklar: *= /= %/ &= ^= |= <<= >>=, einige klar -= += Ich habe gesucht, nichts für mich brauchbares gefunden im Zusammenhang mit set /a des Kommandointerpreters. Kann mir bitte jemand etwas darüber mitteilen, erklären, Beispiele geben, hat jemand Quellen, Links? Habt dank für Aufmerksamkeit und Rat. Edgar bearbeitet 24. Januar 2013 von lefg Zitieren Link zu diesem Kommentar
testperson 1.708 Geschrieben 23. Januar 2013 Melden Teilen Geschrieben 23. Januar 2013 (bearbeitet) Hi, set /a "<VARIABLE> <OPERATOR> <VARIABLE>" set /a "OP1 += OP2" ist im Endeffekt das gleiche wie set /a "OP1 = OP1 + OP2" Wenn ich mein gutes altes C Buch wieder finde, kann ich dir noch ein paar mehr Infos dazu geben. Auf die schnelle habe ich jetzt nur http://de.wikipedia.org/wiki/Bitweiser_Operator gefunden. Gruß Jan bearbeitet 23. Januar 2013 von testperson Zitieren Link zu diesem Kommentar
lefg 276 Geschrieben 24. Januar 2013 Autor Melden Teilen Geschrieben 24. Januar 2013 (bearbeitet) Hallo Jan, danke für die Antwort. Beim Recherchieren habe ich natürllich auch den Beitrag in Wikipedia gefunden, leider ist dieser nicht hilfreich im Kontext mit dem set /a des Kommandointerpreters von "MSDOS", auch ein Buch über höhere Programmiersprachen wie C bring mich da nicht weiter. Die Zuweisung set /a add+=1 ist mit bekannt, ebenso sub-=1, mul*=1, div/=2, es gibt da aber noch einige, deren Anwendung mir unbekannt, zu dennen ich noch nichts gefunden. Die Sache fällt mir seit langer Zeit immer wieder ein, es ist aber nicht lebenswichtig. Gruß Edgar bearbeitet 24. Januar 2013 von lefg Zitieren Link zu diesem Kommentar
Cybquest 36 Geschrieben 24. Januar 2013 Melden Teilen Geschrieben 24. Januar 2013 Zu den boolschen (bitweisen) Verknüpfungen könnte ich zumindest soviel sagen: UND: Das Erg. liefert nur dann eine 1, wenn beide Operanden 1 sind. Bsp.: 15 & 4 = 4 -> Binär: 1111 & 0100 = 0100 ODER: Erg. 1 wenn einer der Op. 1 ist. Bsp. 10 ^ 6 = 14 -> Binär: 1010 ^ 0110 = 1110 ... Brauchbar zum gezielten Ein- oder Ausschalten von Bits. Mit UND schalte ich alle Bits, die ich auf 0 stelle aus. Rest bleibt. Bsp. 10110110 & 11111011 = 10110010 (kann auch angewendet werden, um Netzwerkanteil einer IP-Adresse anhand Subnetzmaske zu ermitteln;). Mit ODER kann ich Bits gezielt einschalten: 10110110 ^ 01000000 = 11110110 Wenn man in der Elektrotechnik auf diese Art Zeug ansteuert, kenn ich das. Wo man das sonst brauchen könnte... k.A. ;-))) Zitieren Link zu diesem Kommentar
lefg 276 Geschrieben 24. Januar 2013 Autor Melden Teilen Geschrieben 24. Januar 2013 (bearbeitet) Hallo Im Zusammnhang mit set /a scheint es so aber nicht anwendbar. Ich habe es so probiert set /a var=1&1 führt zu: Der Befehl "1" ist entweder falsch geschrieben oder konnte nicht gefunden werden. Boolsche Algebra ist mir bekannt. :) bearbeitet 24. Januar 2013 von lefg Zitieren Link zu diesem Kommentar
testperson 1.708 Geschrieben 24. Januar 2013 Melden Teilen Geschrieben 24. Januar 2013 Hi, setze einfach Anführungszeichen um den Ausdruck darum: set /a "var=1&1" Gruß Jan Zitieren Link zu diesem Kommentar
lefg 276 Geschrieben 24. Januar 2013 Autor Melden Teilen Geschrieben 24. Januar 2013 (bearbeitet) Das Setzen der Anführungszeichen, der richtige Hinweis; ein gutes Bingo. Ich danke dafür. :) Auch so scheint es zu klappen. set /a var="1&1" bearbeitet 24. Januar 2013 von lefg Zitieren Link zu diesem Kommentar
blub 115 Geschrieben 24. Januar 2013 Melden Teilen Geschrieben 24. Januar 2013 Mit ODER kann ich Bits gezielt einschalten: 10110110 ^ 01000000 = 11110110 Wenn man in der Elektrotechnik auf diese Art Zeug ansteuert, kenn ich das. Wo man das sonst brauchen könnte... k.A. ;-))) z.B. prinzipiell benötigt man boolsches Vergleiche um z.b. an Userkonten gezielt einzelne UserAccountControls wie trustedDelegation, smartcardrequired, accountdisabled etc. zu verändern oder auszulesen http://www.mcseboard.de/topic/190771-accounts-mit-trusted-for-delegation-rechten-im-ad-finden/ ähnliches gilt für Berechtigungen im Filesystem Aber Batch und Bool passen denke ich eher nicht zusammen, obwohl beide ähnlich alt sein dürften :-) Zitieren Link zu diesem Kommentar
Cybquest 36 Geschrieben 24. Januar 2013 Melden Teilen Geschrieben 24. Januar 2013 Ah cool... stimmt :) Zitieren Link zu diesem Kommentar
testperson 1.708 Geschrieben 24. Januar 2013 Melden Teilen Geschrieben 24. Januar 2013 Hi, ich bin nochmal ein paar alte Notizen aus der guten alten Schulzeit durchgegangen. Evtl. kann es ja jemand erklären: set /a "1<<30>>30" 1 set /a "1<<31>>31" -1 set /a "1<<32>>32" 0 Warum verschiebt/wertet er genau bei 31 das Vorzeichenbit aus? Zitieren Link zu diesem Kommentar
lefg 276 Geschrieben 24. Januar 2013 Autor Melden Teilen Geschrieben 24. Januar 2013 Ich hab noch einige (momentan zwei) Seiten gefunden, die möglicherweise etwas Erklärendes enthalten. http://ss64.com/nt/set.html http://ss64.org/viewtopic.php?id=1649 Zitieren Link zu diesem Kommentar
ZeroKnowledge 11 Geschrieben 25. Januar 2013 Melden Teilen Geschrieben 25. Januar 2013 (bearbeitet) @testperson 1 << 31 // 10000000000000000000000000000000 = -2147483648 Setzt das höchste/signifikanteste Bit (MSB) einer 32-bittigen Zahl auf 1 was - normalerweise - als Minus interpretiert wird. (1 << 31) >> 31 // 11111111111111111111111111111111 = -1 Beim zurück-shiften wird von links nach rechts mit dem MSB aufgefüllt, was zu 32 Einsen und damit -1 führt. bearbeitet 25. Januar 2013 von ZeroKnowledge Zitieren Link zu diesem Kommentar
lefg 276 Geschrieben 25. Januar 2013 Autor Melden Teilen Geschrieben 25. Januar 2013 (bearbeitet) In der Beschreibung von set /a wird ein Prefix 0b für binäre Zahlen erwähnt, im Gegensatz zu 0x konnte ich es bisher nicht zum Funktionieren bringen. Numerische Werte stellen immer Dezimalzahlen dar, es sei denn, sie haben ein Präfix 0x fürhexadezimale Zahlen, 0b für binäre Zahlen oder 0 für oktale Zahlen. Damitstellt 0x12 dieselbe Zahl wie 18 oder 022 dar. Beachten Sie, dass die oktaleSchreibweise verwirrend sein kann: So sind 08 und 09 keine gültigen Zahlen,da 8 und 9 keine erlaubten oktalen Ziffern sind. Hat jemand eine "Ahnung" dazu? bearbeitet 25. Januar 2013 von lefg Zitieren Link zu diesem Kommentar
ZeroKnowledge 11 Geschrieben 25. Januar 2013 Melden Teilen Geschrieben 25. Januar 2013 (bearbeitet) Vielleicht war es zu Anfang mal geplant auch eine binäre Darstellung zu unterstützen, umgesetzt wurde es dann aber wohl nicht. Zumindest ist darüber in der Doku bei Microsoft selbst nichts (mehr) zu lesen. Numeric values are decimal numbers unless prefixed by 0× for hexadecimal numbers or 0 for octal numbers. Therefore, 0×12 is the same as 18 is the same as 022. The octal notation can be confusing. For example, 08 and 09 are not valid numbers because 8 and 9 are not valid octal digits. bearbeitet 25. Januar 2013 von ZeroKnowledge Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.