Citat:
Ursprungligen postat av
A.Selkirk
Om man tittar bakåt i historien så fanns det säkert kod i gammal C där en char var 6 bitar.
6 bitar kan bara ge upphov till 64 olika tecken, om man väljer att koda tecken med bara 6 bitar.
Ovanligt, men det förekom. Men tecknet var ändå en
char, enligt Cs sätt att se
Sedan kom 7-bitars ASCII, som blev basen för nästan alla ordbehandlare på den tiden.
Som sedan kom att överträffas av 8-bit ASCII, den dominerade teckenuppsättningen överallt för webbservrar mm.
Men vill man ha en 16 bit float så måste man vara medveten om att den datatypen är så pass begränsad att det är frågan om den egentligen är så användbar. Flera av värdena i den utgörs av NaN, alltså inte så praktiskt.
Man bör tänka sig noga för, att skapa egna datatyper för speciella ändamål brukar inte vara så lyckat.
Ja man gör det i tex Rymden där man måste spara på varje bit, förstås.
Men för de som skriver de programmen så vet de ju alla begränsningar i ryggmärgen från början.
Risken med en Minifloat är att man skapar stora problem för de programmerare som sedan ska använda den och kompilera skiten.
Vad händer tex vid underflow, overflow, teckenbyte, division med noll mm.
Skall man dessutom samtidigt hålla reda på felet vid varje operation ja då är man snabbt ute
på mycket hal is, och programmet blir extremt arbetsamt att skriva.
Att hålla reda på alla ifs och else och elseifs och varje grens feluppskattning det blir snabbt mycket jobbigt.
Och hu många bittar behövs till exponenten egentligen ?
Ett väl optimerat sådant här system för tex neurala nätverk och AI måste vara riktigt genomtänkt från början.
Så klart att om man bara använder operatorerna >, < , == eller =! så funkar de ju hyfsat
Annars så när ni har lanserat den supersnabba programvaran med den supersmarta FBF FlashBackFloat med 13 vassa bitar, eller bfloat16 så får ni snabbt en massa arga telefonsamtal från utvecklare som har råkat gå bet på denna rejäl mina,
Att deras omsorgsfullt skrivna färdiga programvara bara matar ut "garbage" hela tiden, typ ;(
Tycker knappt dessa speciella datatyper har någon användning än när det verkligen krisar.
Du kan ju knappt använda debuggern för att använda inspect, eftersom den förutsätter att värdet är 32 eller 64 bits idag.
Så var försiktig med vad ni önskar i detta delikata problem.
Ni kanske också måste skriva om varje operatorfunktion för sig för dess udda datatyper,
plus fprintf-directiven, dvs %-expansionen till text.
Finns massvis av gamla projekt där man laborerade med sådant här, och det blev till många dryga arbetstimmar, kanske i onödan, tyvärr...
Lite nostalgi om 16bits float här:
https://en.wikipedia.org/wiki/Bfloat...g-point_format
Ännu mera härlig nostalgi med 6-bits characters:
https://en.wikipedia.org/wiki/Six-bit_character_code