Kapitel 20: Talsystem 20 Talsystem ................................................................................................ 328 Skriva in och konvertera talsystem ..................................................... 329 Beräkningar med binära och hexadecimala tal.................................. 330 Jämföra eller manipulera enskilda bitar ............................................. 331 När du skriver in ett heltal på din TI-89 kan du skriva in det i decimal, binär eller hexadecimal form. Du kan också ange ett läge för Base för att ange i vilket talsystem resultat ska visas. Bråktal och decimaltal visas alltid i decimal form. Obs! Från den nya menyn MATH/Base kan du välja ett antal operationer som är relaterade till olika talsystem. Binära värden består av 0 och 1 med basen 2: 100 2 0 ù 0 = +0 2 1 ù 0 = +0 2 2 ù 1 = +4 Hexadecimala värden består av 0 – 9 och A – F med basen 16: A8F 16 0 ù F = +15 16 1 ù 8 = +128 16 2 ù A = +2560 Dec Bas 10 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 Bin Bas 2 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 10000 Hex Bas 16 0 1 2 3 4 5 6 7 8 9 A B C D E F 10 Du kan använda din TI-89 för att konvertera ett värde från ett talsystem till ett annat. Till exempel, 100 binärt = 4 decimalt och A8F hex = 2703 decimalt. Hexadecimala tal används ofta för att presentera längre binära värden, som är svåra att komma ihåg, som t ex: 1010 1111 0011 0111 A F 3 7 Den hexadecimala formen AF37 är lättare att arbeta med än motsvarande binära 1010111100110111. Med TI-89 kan du också jämföra eller manipulera binära värden bit för bit. Kapitel 20: Talsystem 8920-SWE.DOC TI-89: Chapter 20 (Swedish) Joan Terrell Revised: 11/23/98 11:31 AM Printed: 11/25/98 1:56 PM Page 327 of 6 327 Talsystem Beräkna 10 binärt (bas 2) + F hexadecimalt (bas 16) + 10 decimalt (bas 10). Använd sedan operatorn 4 för att konvertera ett heltal från ett talsystem till ett annat. Avsluta med att se hur förändringar av Base påverkar de visade resultaten. Steg Tangenter 1. Öpnna dialogrutan MODE (sidan 2). I inställningen för Base väljer du DEC som aktuellt talsystem. 3„ (använd D när du vill flytta till läget Base) B1¸ Heltalsresultat visas i aktuellt läge för Base. Bråktal och decimaltal visas alltid i decimal form. 2. Beräkna 0b10+0hF+10. När du vill skriva in ett binärt eller hexadecimalt tal måste du alltid ange 0b eller 0h framför talet (nolla samt bokstaven B alternativt H). Om du inte gör detta betraktas talet som ett decimalt tal. 3. Lägg till 1 till resultatet och konvertera det till ett binärt värde. 2 öppnar konverteringsoperatorn 4. OjB10«O 2™HF j«10 ¸ «12 2™HEX j¸ 5. Lägg till 1 till resultatet och visa det i decimal form utan konvertering. «1¸ 6. Ändra inställningen för Base till HEX. 3„ (använd D för att flytta till Base) B2¸ 7. Beräkna 0b10+0hF+10. OjB10«O 2™HF j«10 ¸ 8. Ändra inställningen för Base till BIN. 3„ (använd D för att flytta till Base) B3¸ 9. Skriv in 0b10+0hF+10 igen. ¸ 328 Viktigt! Prefixen 0b och 0h börjar med en nolla, inte bokstaven O och följs sedan av B eller H. «12 2™BIN j¸ 4. Lägg till 1 till resultatet och konvertera det till ett hexadecimalt värde. När Base = HEX eller BIN gäller vissa begränsningar för storleken på resultatet. Se mer på sidan 330. Visa Resultaten börjar med 0b eller 0h för att ange aktuellt talsystem. Kapitel 20: Talsystem 8920-SWE.DOC TI-89: Chapter 20 (Swedish) Joan Terrell Revised: 11/23/98 11:31 AM Printed: 11/25/98 1:56 PM Page 328 of 6 Skriva in och konvertera talsystem Oberoende av inställningen för Base måste du alltid ange prefix när du skriver in tal i binär och hexadecimal form. Skriva in ett binärt eller hexadecimalt tal När du vill skriva in ett binärt tal använder du formen: 0b binärtTal (till exempel: 0b11100110) Binärt tal med upp till 32 tecken Noll, inte bokstaven O följt av bokstaven b Obs! Du kan skriva in b alt. h i prefixet, samt hexadecimala tecknen A – F, med gemener eller versaler. Resultatet är detsamma. När du vill skriva in ett hexadecimalt tal använder du formen: 0h hexadecimaltTal (till exempel: 0h89F2C) Hexadecimalt tal med upp till 8 tecken Noll, inte bokstaven O följt av bokstaven h Om du skriver in ett tal utan prefixet 0b eller 0h, som t ex 11, antas det alltid vara ett decimalt tal. Om du utesluter prefixet 0h men använder de hexadecimala tecknen A – F hanteras hela talet som ett variabelnamn. Konvertera mellan talsystem Använd konverteringsoperatorn 4. heltalsUttryck 4 Bin heltalsUttryck 4 Dec heltalsUttryck 4 Hex Obs! Om talet inte är ett heltal visas ett felmeddelande. När du vill skriva 4, tryck 2 Y. Du kan också välja konvertering mellan talsystem via menyn MATH/Base. Konvertera 256 från decimalt till binärt talsystem: För binära och hexadecimala tal måste du ange prefixet 0b alt. 0h. 256 4 Bin Konvertera 101110 från binärt till hexadecimalt talsystem: 0b101110 4 Hex Alternativa metoder för konverteringar Resultaten börjar med 0b eller 0h för att ange aktuellt talsystem. I stället för att använda 4 kan du: Om Base = BIN: 1. Använd 3 (sidan 330) för att ange inställning för Base till det talsystem du vill konvertera till. Om Base = HEX: 2. Skriv in det värde du vill konvertera (med rätt prefix) i grundfönstret och tryck ¸. Kapitel 20: Talsystem 8920-SWE.DOC TI-89: Chapter 20 (Swedish) Joan Terrell Revised: 11/23/98 11:31 AM Printed: 11/25/98 1:56 PM Page 329 of 6 329 Beräkningar med binära och hexadecimala tal Alla operationer som använder heltal kan även användas med hexadecimala och binära tal. Resultaten visas med det talsystem som är inställt i Base. Resultaten är begränsade till vissa maxvärden då Base = HEX eller BIN. Ställa in Base för visning av resultat 1. Tryck 3 „ för att öppna sidan 2 i fönstret MODE. 2. Bläddra till inställningen för Base, tryck B, och välj önskad inställning. 3. Tryck ¸ för att stänga fönstret MODE. Obs! Inställningen för Base påverkar bara visade resultat. Du måste alltid ange prefixet 0h alt. 0b när du skriver in hexadecimala och binära tal. Om Base = HEX: Inställningarna för Base påverkar bara visningen av heltal. Bråktal och decimaltal visas alltid i decimal form. Resultaten börjar med 0h för att ange aktuellt. Division när Base = HEX alt. BIN Om du vill försäkra dig om att resultatet alltid är ett heltal kan du använda intDiv() i stället för e. Begränsningar när Base = HEX alt. BIN Om Base = HEX: Med inställningen Base=HEX eller BIN visas resultaten av en division i hexadecimal eller binär form bara om resultatet är ett heltal. Tryck ¥ ¸ om du vill visa resultatet i formen APPROXIMATE. När Base=HEX alt. BIN sparas heltal internt som ett 32-bitars binärt tal vilket kan använda talområdet som visas nedan (visas i hexadecimal och decimal form): 0hFFFFFFFF ë1 0h80000000 ë2.147.483.648 0h1 1 0h0 0 0h7FFFFFFF 2.147.483.647 Om ett resultat är för stort för att lagras i 32 bitar används en symmetrisk modulo-operation för att bringa resultatet inom givna gränser. Alla tal större än 0h7FFFFFFF påverkas av detta. Till exempel ändras 0h80000000 till 0hFFFFFFFF till negativa värden. 330 Kapitel 20: Talsystem 8920-SWE.DOC TI-89: Chapter 20 (Swedish) Joan Terrell Revised: 11/23/98 11:31 AM Printed: 11/25/98 1:56 PM Page 330 of 6 Jämföra eller manipulera enskilda bitar Med följande operatorer och funktioner kan du jämföra och manipulera enskilda bitar i binära tal. Du kan skriva in heltal i valfritt talsystem. Talen konverteras automatiskt till binära tal för operationen och resultaten visas i aktuellt talsystem inställt i Base. Booleska operationer Obs! Du kan välja dessa operatorer från menyn MATH/Base. Exempel på hur du använder respektive operator finns i Appendix A längst bak i denna bok. Operator med syntax Beskrivning not heltal Returnerar förstakomplementet där varje bit är omvänd. · heltal Returnerar andrakomplementet vilket är samma som förstakomplementet +1. heltal1 and heltal2 Vid en bitvis jämförelse med and är resultatet 1 om båda bitarna är 1, annars är resultatet 0. Det returnerade värdet motsvarar det resulterande binära värdet. heltal1 or heltal2 Vid en bitvis jämförelse med or är resultatet 1 om en av bitarna är 1 och 0 bara om båda bitarna är 0. Det returnerade värdet motsvarar det resulterande binära värdet. heltal1 xor heltal2 Vid en bitvis jämförelse med xor är resultatet 1 om en av bitarna är 1 (men inte båda). Resultatet är 0 om båda bitarna är 0 eller om båda bitarna är 1. Det returnerade värdet motsvarar det resulterande binära värdet. Om Base = HEX: Anta att du skriver in: 0h7AC36 and 0h3D5F Internt konverteras de hexadecimala talen till 32-bitars binära tal. Om Base = BIN: Bitarna i de båda talen jämförs sedan bit för bit. Obs! Om ett resultat är för stort för att lagras i 32 bitar används en symmetrisk modulo-operation för att bringa resultatet inom givna gränser (se sidan 330). 0h7AC36 = 0b00000000000001111010110000110110 and 0h3D5F and = 0b00000000000000000011110101011111 0b00000000000000000010110000010110 = 0h2C16 Inledande nollor visas inte i resultatet. Resultatet visas i det talsystem som är inställt i Base. Kapitel 20: Talsystem 8920-SWE.DOC TI-89: Chapter 20 (Swedish) Joan Terrell Revised: 11/23/98 11:31 AM Printed: 11/25/98 1:56 PM Page 331 of 6 331 Rotera och skifta bitar Funktion med syntax Beskrivning rotate(heltal) Om #antalSteg är: – eller – ¦ uteslutet — alla bitar roteras ett steg till höger (förval är ë 1). ¦ negativt — alla bitar roteras angivet antal steg till höger. ¦ positivt — alla bitar roteras angivet antal steg till vänster. rotate(heltal,#antalSteg) Obs! Du kan välja dessa operatorer från menyn MATH/Base. Exempel på hur du använder respektive operator finns i Appendix A längst bak i denna bok. Vid en rotering till höger roteras biten längst till höger till den lediga platsen längst till vänster och tvärt om för en rotering till vänster. shift(heltal) Om #antalSteg är: – eller – ¦ uteslutet — alla bitar skiftas ett steg till höger (förval är ë 1). ¦ negativt — alla bitar skiftas angivet antal steg till höger. ¦ positivt — alla bitar skiftas angivet antal steg till vänster. shift(heltal,#antalSteg) Vid en skiftning till höger försvinner biten längst till höger och 0 alt 1 sätts in för att matcha biten längst till vänster. Vid en skiftning till vänster försvinner biten längst till vänster och 0 sätts in längst till höger. Om Base = HEX: Anta att du skriver in: shift(0h7AC36) Internt konverteras de hexadecimala talen till 32-bitars binära tal. Om Base = BIN: Bitarna i de båda talen jämförs sedan bit för bit. Varje bit skiftas till höger. Obs! Om ett resultat är för stort för att lagras i 32 bitar används en symmetrisk modulo-operation för att bringa resultatet inom givna gränser (se sidan 330). 0h7AC36 = 0b00000000000001111010110000110110 Lägger till 0 om den vänstra biten är 0, eller 1 om den vänstra biten är 1. Försvinner 0b00000000000000111101011000011011 = 0h3D61B Inledande nollor visas inte i resultatet. Resultatet visas i det talsystem som är inställt i Base. 332 Kapitel 20: Talsystem 8920-SWE.DOC TI-89: Chapter 20 (Swedish) Joan Terrell Revised: 11/23/98 11:31 AM Printed: 11/25/98 1:56 PM Page 332 of 6