NEWS
(erledigt) Bitweise "and" in Blockly
-
Wie schreibt man in Blockly
c= a and b
Ich benötige ein bestimmtes Bit aus einem Wert.
Beispiel :
a ist 43
b ist 2
Ergebnis 2
Beispiel:
a ist 13
b ist 2
Ergebnis: 0Ich brauche nur das Bit 2
oder geht das nur in JS?@ubecker Du meinst den &-Operator?
43 ist 0010 1011 02 ist 0000 0010 ---------------- 0000 0010Wäre in JavaScript
const c = 42 & 2. Kann man auch binär schreiben:const c = 0b101011 & 0b10.Einen Baustein gibts dafür aktuell nicht. Am einfachsten über eine selbst definierte Funktion:
return param & 2;oderreturn param & 0b10; -
@ubecker Du meinst den &-Operator?
43 ist 0010 1011 02 ist 0000 0010 ---------------- 0000 0010Wäre in JavaScript
const c = 42 & 2. Kann man auch binär schreiben:const c = 0b101011 & 0b10.Einen Baustein gibts dafür aktuell nicht. Am einfachsten über eine selbst definierte Funktion:
return param & 2;oderreturn param & 0b10;@haus-automatisierung said in Bitweise "and" in Blockly:
Du meinst den &-Operator?
ja genau.
ok. Dan werde ich wohl alles in JS schreiben. Ist immer eine gute Übung.
danke -
@haus-automatisierung said in Bitweise "and" in Blockly:
Du meinst den &-Operator?
ja genau.
ok. Dan werde ich wohl alles in JS schreiben. Ist immer eine gute Übung.
danke@ubecker sagte in Bitweise "and" in Blockly:
Dan werde ich wohl alles in JS schreiben.
Kannst ja bei Blockly bleiben und einfach eine JS-Funktion mit einem Einzeiler erstellen.
-
Wie schreibt man in Blockly
c= a and b
Ich benötige ein bestimmtes Bit aus einem Wert.
Beispiel :
a ist 43
b ist 2
Ergebnis 2
Beispiel:
a ist 13
b ist 2
Ergebnis: 0Ich brauche nur das Bit 2
oder geht das nur in JS? -
@ubecker sagte: Ich benötige ein bestimmtes Bit aus einem Wert.
Siehe checkBit(val, bit)
@paul53 said in Bitweise "and" in Blockly:
@ubecker sagte: Ich benötige ein bestimmtes Bit aus einem Wert.
Siehe checkBit(val, bit)
Danke, gelesen und nicht alles verstanden. Ist noch etwas zu hoch für mich. (Bin Hardwerker und kein Softwerker)
Hab aber eine einfache JS Lösung für mich gefunden.
brauch doch nur 3 Bits.let Bit_0 = 1; let Bit_1 = 2; let Bit_2 = 4; let ID_WR2Haus = 'javascript.0.PV_WR2Haus'; let ID_Batt_charge = 'javascript.0.PV_Batt_charge'; let ID_Batt_discharge = 'javascript.0.PV_Batt_discharge'; let ID_System_state = 'alias.0.Energie.PV_Anlage.Betriebsstatus'; let System_state = getState(ID_System_state).val; let Batt_charge = getState(ID_Batt_charge).val; let WR2Haus = getState(ID_WR2Haus).val; // 0 = not charging ; 2 = Charging; setState(ID_Batt_charge , (System_state & Bit_1), true); // 0 = not discharging ; 4 = discharging; setState(ID_Batt_discharge , (System_state & Bit_2), true); // 0 = no Power from PV; 1 = power from PV setState(ID_WR2Haus , (System_state & Bit_1), true); on({ id: [].concat(ID_System_state), change: 'ne' }, async (obj) => { let value = obj.state.val; let oldValue = obj.oldState.val; System_state = (obj.state ? obj.state.val : ''); setState(ID_Batt_charge , (System_state & Bit_1), true); setState(ID_Batt_discharge , (System_state & Bit_2), true); setState(ID_WR2Haus , (System_state & Bit_0), true); });
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden