WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Binär rechnen?

 

jOOs!

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.08.2016, 16:22     Titel: Binär rechnen?
  Antworten mit Zitat      
Ich möchte herausfinden, welchen Wert die Bits in einer Zahl haben. So ist die 20 in Binärdarstellung bekanntlich 10100, bit(20,1) = 1, bit(20,2) = 0, bit(20,3) = 1 usw. ist. Zuerst löste ich das wie folgt:

Code:
function result = bit(n,index)
bin = dec2bin(n);
result = num2str(bin(index));
end;


Das braucht natürlich wahnsinnig viel Rechenzeit (ich muss diese Funktion sehr häufig aufrufen), da ich erst in eine Zeichenkette umwandeln muss, die dann wieder in eine Ganzzahl umgewandelt wird. Ich habe es ein wenig optimiert, indem ich diesen Code benutzte:

Code:
function result = bit(n,index)
bin = dec2bin(n);
if(strcmp(bin(index),'0'))
 result = 0;
else
 result = 1;
end;
end;

In der Tat läuft er schon einmal deutlich schneller. Doch kann ich irgendwie den Weg über die Zeichenkette umgehen? Schließlich ist die Zahl ja bereits binär gespeichert, so dass mir dies sehr sinnlos und als Verschwendung von Rechenzeit vorkommt.


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 20.08.2016, 17:05     Titel:
  Antworten mit Zitat      
Hallo,

dafür gibt es die Funktion bitget .
Diese kann für mehrere Daten auch vektorisiert aufgerufen werden, z.B.
Code:


Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2025 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.