Använd bc för att omvandla talsystem
Att kunna omvandla mellan olika
talsystem med papper och penna är
bra att kunna. Men ibland behöver vi bara ett svar – snabbt. Det här kan
programmet bc
hjälpa dig med. Programmet bc
finns i de flesta Unixliknande
system, så som Linux, FreeBSD, macOS med flera. Förkortningen bc
står för
Basic Calculator men benämns även Bench Calculator.
Som en vanlig miniräknare
När vi först startar bc
kan vi använda det som en vanlig miniräknare,
exempelvis:
$> bc
8*8
64
3^5
243
a=4
b=2
a+b
6
Avsluta bc
med kommandot quit
.
Tänk på vi måste starta bc
med flaggan -l
ifall vi ska kunna använda
decimaler.
$> bc -l
5.8*3.3
19.14
quit
Omvandla mellan olika talsystem
Vi kan ställa in både in-talsystemet och ut-talsystemet i bc
. Som
standard används det vanliga decimala talsystemet med basen 10. För att
omvandla talet 15 till hexadecimalt behöver vi därför bara ändra
ut-talsystemet i bc
. Detta gör vi med obase
. Här sätter vi obase
till
16 (hexadecimalt) men låter ibase
(in-talsystemet) vara orört. Därefter
anger vi talet 15 till bc
och får svaret F
.
$> bc
obase=16
15
F
Om vi istället vill omvandla från binärt till hexadecimalt ändrar vi även
ibase
. Här sätter vi ibase
till 2 (binärt) och låter obase
vara 16
(hexadecimalt) från det föregående exemplet. Vi omvandlar sedan det binära
talet 111 till hexadecimalt.
ibase=2
111
7
OBS: Om vi nu försöker ändra ibase
eller obase
kommer dessa att tolkas
som binära tal eftersom vi har ibase
satt till 2. För att återställa ibase
är det enklaste att avsluta bc
med quit
och börja om igen. För att slippa
avsluta bc
och starta det igen kan vi istället använda bc
direkt från
kommandoraden. Vi anger då obase
, ibase
och talet med hjälp av echo
, och
omdirigerar det sedan till bc
.
För att omvandla det binära talet 110100100 till oktalt (basen 8) kan vi skriva
följande kommando direkt i skalet (kom ihåg att sätta obase
före ibase
):
$> echo "obase=8; ibase=2; 110100100" | bc
644
För att istället omvandla det hexadecimala talet FF till decimalt (basen 10) gör vi på följande sätt:
$> echo "ibase=16; FF" | bc
255
Ett sista exempel, där vi omvandlar det oktala talet 644 till hexadecimalt:
$> echo "obase=16; ibase=8; 644" | bc
1A4
Kommentarer
Kommentarsfältet är modererat. Det innebär att alla kommentarer granskas av ansvarig utgivare före publicering.
Du väljer själv om du vill ange ditt riktiga namn, en pseudonym eller vara helt anonym. Ingen registrering behövs.
Relaterade artiklar
-
Hur procent och bråktal hänger ihop
Procenttal kan skrivas som bråktal och vice versa. Att skriva om procent till bråktal kan därför hjälpa förståelsen för hur man räknar med procent.
-
Roliga egenskaper hos polygoner
Det finns många roliga och intressanta egenskaper hos polygonerna. Det mest intressanta är kanske polygonernas vinkelsumma, och hur dessa kan räknas fram genom att rita trianglar inuti polygonerna.
-
Python och trigonometri
Lite uppfräschning av trigonometri och Python är aldrig fel. Här får vi lära oss hur man kan rita upp rätvinkliga trianglar – direkt i Python – om vi känner till två av sidorna. För detta kommer vi att använda modulerna turtle och math.
-
Ett av mina första nyttoprogram
Vilken nostalgi det var när jag gick igenom programmen på min gamla grafräknare från gymnasiet, en TI-83. Där hittade jag ett av mina första nyttoprogram jag någonsin skrivit. Det var ett program skrivit i ett språk kallat TI-BASIC, en version av Basic för Texas Instruments grafräknare. Året då jag skrev programmet är troligen år 2000 eller 2001.
Senaste nyheterna och inläggen
-
Skapa fristående binärer av Python-skript
Docker har blivit det nya sättet att paketera och köra Python-skript, även när skripten körs från exempelvis ett cronjob. Men ibland behöver vi inte en hel Docker-miljö med den overhead det innebär för väldigt små skript. Då är det smidigare att göra om skriptet till en körbar binärfil. Då kan vi även enkelt flytta filen mellan olika Linuxsystem.
-
Demonerna på internet är här
Nu har Demonerna på internet anlänt från tryckeriet – en lättsam och kort bok om TCP/IP-protokoll, internet och säkerhet.
-
Demonerna på internet
Efter många månaders arbete är boken Demonerna på internet klar. Planerad utgivning är i mitten av juni.
-
Ny utgåva av Docker från grunden
Docker från grunden utkommit i en ny utgåva. Den största skillnaden är uppdateringen till Docker Compose version 2. Även andra mindre uppdateringar har gjorts för att hålla boken aktuell.
-
PGP-krypterat formulär
Jag blev inspirerad av Tutanotas Secure Connect – ett säkert webbformulär som skickar uppgifterna krypterat direkt till inkorgen. Skulle det inte gå att bygga något liknande med PGP? Det gick, och det var dessutom förvånansvärt enkelt då det redan finns ett GnuPG-bibliotek för PHP.
Utvalda artiklar
-
Poliser satte dit oskyldig
Två poliser dömdes i juni till vardera ett års fängelse av Lunds tingsrätt för att ha misshandlat och gripit en oskyldig man i hans bostad i Landskrona. Händelsen ägde rum en natt i mars förra året och spelades in av en övervakningskamera i mannens bostad.
-
Retroloppis i Påarp
Idag var det retroloppis hos Andreas Nilsson i Påarp. På baksidan av huset fanns hundratals spel uppradade på långa bord. Trots friska vindar och sval temperatur var loppisen välbesökt.
-
Stort deltagande på årets Gubbdata
I helgen var det Gubbdata i Lund – ett av Sveriges största demoparty. På plats fanns cirka ett hundra deltagare, alla med en passion för retrodatorer.
-
Kapad identitet
I mitten av september förra året blev Kristina utsatt för ett id-kapningsförsök. Någon hade ansökt om ett lån på 250 000 kr i hennes namn. Låneansökan gick ut till ett 20-tal banker.
-
Amiga-scenen lever än
I en villa mellan Ljungskile och Stenungsund den 27 november träffades de igen, ett gäng glada Amiga-entusiaster. Man träffas för att prata, titta på demos, spela och ha allmänt trevligt.
CyberInfo Sverige är ett IT- och medieföretag i nordvästra Skåne som tillhandahåller böcker, utbildningar, nyheter och konsulttjänster inom Linux, säkerhet och programmering.
CyberInfo Sverige är godkänd för F-skatt, är momsregistrerat och innehar
utgivningsbevis för webbplatsen www.cyberinfo.se.