% I filen finns kommentarer och frågor till uppgifterna.
% Läs noga igenom och besvara frågorna vartefter.
%
%
function binary
% binary binär decimal
%
% Programmet skrivet av Carina Edlund 1 september 2009
% Programmet behandlar binära tal och kan byggas ut till att representera 
% andra talsystem. Detta ska ses som en liten del i ett större sammanhang.
% Under laborationen används positiva heltal.

format compact

% Uppgift 1

dec = input('Ange ett decimalt positivt heltal');
disp('Det decimala talet')
disp(dec)
bin = dec2bin(dec);
disp('blir i det binära talsystemet ')
disp(bin)

bin = input('Ange ett binärt positivt heltal. Talet anges som en vektor t.ex. [1 0 1]'); 
disp('Det binära talet')
disp(bin)
dec = bin2dec(bin);
disp('blir i det decimala talsystemet ')
disp(dec)
% Uppgift 1 slut


% Uppgift 2

% Testa uppgiften 2

% Uppgift 2 slut


% Uppgift 3

% Testa uppgiften 3

% Uppgift 3 slut


% Uppgift 4

% Testa uppgiften 4

% Uppgift 4 slut


% Uppgift 5

% Testa uppgiften 5

% Uppgift 5 slut

end % binary

% Uppgift 1
% Skriv klart funktionerna dec2bin och bin2dec.
% Ändra INTE i funktionshuvudet.


function bin = dec2bin(dec)
% Ett decimalt positivt heltal konverteras till ett binärt som returneras.

% Skriv in din kod

bin = dec;  % Stämmer detta?

end % dec2bin

function dec = bin2dec(bin)       
% Ett binärt positivt heltal konverteras till ett decimalt som returneras.

% Skriv in din kod

dec = bin;  % Stämmer detta?

end % bin2dec
% Uppgift 1 slut


% Uppgift 2
% Skriv klart funktionen binAdd.
% I denna uppgift kan man anta att de två binära talen in 
% till funktionen består av högst sex bitar. 
% Observera att summan ut ur funktionen ska bestå av exakt sex bitar.

function resultat = binAdd(bin1, bin2)
% Två binära tal med vardera högst sex bitar adderas och deras
% summa returneras. Den binära summan består av sex bitar varken 
% mer eller mindre.

% Skriv in din kod

resultat = bin1 + bin1;   % Stämmer detta? 

end % binAdd

% Uppgift 2 slut


% Uppgift 3
% I denna uppgift ska representationen av de binära talen ändras. 
% Det gäller nu att ett binärt tal typdeklareras med siffran 2 som 
% placeras först i vektorn och därefter kommer det binära värdet som 
% består av exakt sex bitar.
%
% Funktionen makeBin skapar ett binärt tal med denna representation.
% In till funktionen makeBin skickas en vektor med det binära talets
% värde. Är det binära talets värde fler än sex bitar felbehandlas det på
% lämpligt sätt, motivera hur du valt att göra! Är det binära talets värde
% färre än sex bitar åtgärdas detta på lämpligt sätt, motivera hur du valt
% att göra!


% Grundfunktioner
function number = makeNumber(type, value)
% Skapar och returnerar ett talobjekt.
% Talobjektet innehåller typ därefter värde.

number = [type value];

end % makeNumber

function type = getType(number)
% Returnerar ett talobjekts typ.

type = number(1);

end % getType

function value = getValue(number)
% Returnerar ett talobjekts värde.

value = number(2:end);

end % getValue
% slut grundfunktioner


function binNumber = makeBin(binValue);
% Skapar och returnerar ett binärt talobjekt.

% Skriv in din kod

end % makeBin

function binValue = getBinary(binNumber)
% Returnerar ett binärt talobjekts värde.

% Skriv in din kod
% Kontrollera att du har rätt talobjekt in till funktionen!

end % getBinary

% Uppgift 3 slut



% Uppgift 4
% Skriv en ny funktion som adderar två binära tal.
% Alla binära tal representeras enligt uppgift 3.
% En typkontroll måste göras av de två talen som ska adderas. Är det 
% rätt typ utförs additionen annars görs en lämplig felbehandling,
% motivera dina val.

% Hur har du testat att din funktion arbetar korrekt?
% Visa testdata och resultat.

% Uppgift 4 slut


% Uppgift 5
% Istället för att representera ett binärt tal med typ och värde ändras 
% nu representationen till värde och typ. Genomför nödvändiga ändringar 
% i koden (gäller koden från och med uppgift 3 och framåt)! 
% Får du samma resultat som tidigare då du t.ex. adderar? Motivera noga!!! 


% Uppgift 5 slut