Hvilken konvertering skal jeg undervise for mine studenter? At 1 kB er 1024 byte (binær), som alle lærte tilbage i halvfemserne eller den nylige branchestyrede “venlige” konvertering, der siger, at 1 kB faktisk er 1000 byte (decimal)?
Min umiddelbare følelse går mod den binære konvertering, men når IEC siger andet og større OSer beslutter for decimalkonvertering (Mac OS X ≥ 10.6 og Ubuntu ≥ 10.10 bruger nu SI-præfikser udelukkende for at henvise til beføjelser på 1000) Jeg er ikke så sikker mere.
Kommentarer
- Bemærk, at SI-præfikset ” kilo ” skrives altid med små bogstaver ” k ” div Personligt er jeg vant til at se ” kB “, selv når det strengt taget ikke er ‘ ta SI-præfiks.
- xkcd
- Ram er solet i kiB, Mib, GiB og harddiske i kB, MB, GB. Begge ofte mærket kB, M B, GB. Så det handler ikke altid om programmering.
- Det, jeg synes er morsomt, er, at power-of-two-versionen (den, der ‘ klart viser, hvad der normalt ønskes ) har ingen som helst begrundelse for brugen af ” Kilo ” præfikset – det ‘ det er bare, at en eller anden vilkårlig magt på to tilfældigvis kommer tæt på en eller anden vilkårlig magt på 10, så vi ignorerer forskellen for nemheds skyld at kunne sige ” K ” (eller ” M ” eller ” G “) fordi ” 0x0200 ” abyte er for svært at sige.
- Byte er ikke en SI-enhed. SI-enheden for mængde er muldvarpen. 1 GB er cirka 1,66 femtomole byte
Svar
Du bør undervise begge dele, og du vil sandsynligvis bruge binær enhed. Når du taler om forskellen, kan det være nyttigt at fortælle dem, hvordan man fortæller forskellen, når man læser dem:
SI-kiloen er k :
$ 1 \ \ text {kB (kilobyte)} = 10 ^ {3} \ \ text {bytes} = 1000 \ \ text {bytes} $
Mens den binære kibi- er Ki :
$ 1 \ \ text {KiB (kibibyte)} = 2 ^ {10} \ \ text {bytes} = 1024 \ \ text {bytes} $
Jeg bemærker, at du brugte KB i dit spørgsmål til at henvise til begge størrelser; måske skal du også påpege, at KB kunne fortolkes som et af disse præfikser (selvom Wikipedia antyder , bruges det oftest i stedet for KiB). I din position vil jeg foreslå at præcisere, hvilken du mener, hvis du bruger denne notation.
(Mens du går over forvirrende enheder, er en relateret forskel i skriveenheder, at små bogstaver b er bits, store bogstaver B er bytes; en otte gange forskel er meget mere signifikant end 2,4%.)
Kommentarer
- Ud over bare at undervise i begge dele, skal du lære at k / kilo kan betyde enten afhængigt af kontekst / hvem ‘ bruger det. Bare fordi der findes kibble, ‘ t betyder, at folk kan lide eller faktisk bruger det.
- Hvis du dækker bits og bytes, skal du i det mindste også kort nævne, at en ” kilobit ” er næsten altid 1000 bits (fordi netværk) og en ” kilobyte ” er næsten altid 1024 bytes (fordi alt -undtagen til netværk).
- 1MiB er ~ 5% større end 1MB, 1GiB er 7,4% større end 1GB, og 1TiB er næsten y 10% større end 1 TB.
- Jeg blev altid lært, at basen er binær, et 8-bit ord er en byte, et 16-bit ord er to byte, og efter binær konvention er 1 KB 1024 byte , 1MB er 1024 KB, 1GB er 1024 MB, 1TB er 1024 GB – og i binær, basisenheden til computing, giver det perfekt mening. Jeg har altid fundet den forsøgte anvendelse af SI-brug en forkert og unødvendig forvirring. Når det er sagt, skal en studerende som underviser forstå forvirringen.
- ” Skal jeg lære at 1 KB = 1024 bytes eller 1000 bytes ? ” Ja. 🙂
Svar
Du bør lære dem det “s rodet op uden reparation , og det er deres generations opgave at undervise i næste generation til at bruge fjollende standardpræfikser , så når de endelig går på pension (og de nuværende oldtimere fjernes mere permanent fra argumentet), der kan endelig være enighed.
Som de aktuelle sager er, er alle præfikser ukendte uden sammenhæng.En netværksmegabit er $ 10 ^ 6 $ bits, et filsystem megabyte er $ 2 ^ {20} $ bytes, en harddisk megabyte er et sted tæt på $ 10 ^ 6 $ bytes, og en megapixel er “sandsynligvis en million pixels, hvem bekymrer sig. “
Kommentarer
- Konsensus synes at være, at diskstørrelse er den nærmeste enkle tilnærmelse lavere end n × 1000 ^ m. Så 2.057 × 10 ^ 12 bytes ville blive annonceret som 2 TB, ikke 2,1 TB.
- I ‘ d bemærk, at præfikser sjældent (grundlæggende aldrig) har deres binære betydning med andre enheder end byte . En megapixel er 1 million pixels, en megabit er en million bits.
- Filsystemets megabyte er $ 2 ^ {20} $ bytes – måske. Undertiden i samme operativsystem ser du ‘ ll ” megabyte ” (inklusive decimalpræcision) er $ 10 ^ 6 $ i nogle af værktøjerne og $ 2 ^ {20} $ i andre. Oftest i kommandolinjeværktøjer vs GUI-værktøjer, men jeg kender et operativsystem, hvor selv forskellige OS-leverede GUI-værktøjer er uenige om dette …
Svar
Faktisk skal du lære dem begge, så de advares om, at brugen ikke er konsistent. Derefter kan du vælge en som standard i dit kursus fremover.
Hvilket du vælger, afhænger lidt af, hvad du underviser. Hvis det er hvordan man vurderer harddiske osv., Fungerer $ K = 1000 $ nu. For de fleste programmeringer er $ K = 2 ^ {10} = 1024 $ dog sandsynligvis bedst.
Desværre skyldes den dobbelte betydning sandsynligvis producenter, der forsøger at undgå forvirring hos usofistikerede kunder.
Kommentarer
- Kilobyte blev opfundet langt før de 1000 byte kilobyte i 1998. IEC lavede virkelig bare noget rod.
- Ja, men kilo = 1000 går tilbage til 1795: etymonline.com/word/kilo- Så ikke-nørder har måske noget forrang her, måske. Men vigtigere: Hvis du lærer dem bare den ene ting som ” den korrekte ting “, sætter du dem op til forvirring senere. Verden er rodet. Lærere bør ikke ‘ t lade som om det ikke er ‘ t. At være dogmatisk er ikke ‘ t meget nyttigt.
- Også kB / KB hjælper ikke ‘ t med MB, GB, TB, som a) er meget mere relevante b) har meget større forskelle.
- ” Desværre skyldes den dobbelte betydning sandsynligvis producenter, der forsøger at undgå forvirring i usofistikerede kunders sind ” Mere sandsynligt er det annoncører, der ønsker, at deres produkt skal lyde større, end det virkelig er. Hvorfor annoncere for en 3 TB harddisk ved hjælp af den korrekte 1 TB = 1024 * 1024 * 1024 * 1024 bytes, når du kan annoncere for en 3,3 TB harddisk ved hjælp af den advokatgodkendte 1 TB = 1000 * 1000 * 1000 * 1000 bytes. 3.3 er større end 3, ikke?
- @Readin Eller som jeg ser det oftere, et 3TB-drev, der faktisk har 2,7 TB samlet lagerplads.
Svar
Forskellen mellem at give dine studerende en ordentlig diskussion af dette emne og simpelthen at undervise dem den ene eller den anden , er forskellen mellem at være en rigtig pædagog og at være en reciter af factoids.
Hvis der ikke findes en enkelt korrekt definition af KB til dig, hvorfor skulle du så indgyde noget andet til dine elever? Svaret på dit spørgsmål er således indlysende i dets dannelse. Dit ansvar som lærer er at formidle en forståelse af problemet og ikke at koge det ned til den ene eller den anden kendsgerning, at du ved at være mindre end sand.
Kommentarer
- Jeg er enig, men inden jeg giver en ordentlig diskussion med mine studerende, ‘ giver jeg en ordentlig diskussion her, hvilket i første omgang var min hensigt ( i stedet for at få enkle det ene eller det andet svar).
Svar
Ja Jeg er enig med andre svar, underviser begge dele og bemærker også ligheden.
Forskellen
- $ \ text {ki} = 1024 = 2 ^ {10} $
- $ \ text {k} = 1000 = 10 ^ 3 $
- $ \ text {k}, \ text {M}, \ text {G}, \ text {T}, \ text {P} $ bruges undertiden til at betyde $ \ text {ki}, \ text {Mi}, \ text {Gi}, \ text {Ti}, \ text {Pi} $
Ligheden
- $ 1 = \ text {k} ^ 0 $ og $ 1 = \ text {ki} ^ 0 $
- $ \ text {k} = \ text {k} ^ 1 $ og $ \ text {ki} = \ text {ki} ^ 1 $
- $ \ text {M} = \ text {k } ^ 2 $ og $ \ text {Mi} = \ text {ki} ^ 2 $
- $ \ text {G} = \ text {k} ^ 3 $ og $ \ text {Gi} = \ text {ki} ^ 3 $
- $ \ text {T} = \ tex t {k} ^ 4 $ og $ \ text {Ti} = \ text {ki} ^ 4 $
- $ \ text {P} = \ text {k} ^ 5 $ og $ \ text {Pi} = \ text {ki} ^ 5 $
- $ \ text {E} = \ text {k} ^ 6 $ og $ \ text {Ei} = \ text {ki} ^ 6 $
Hurtig matematik
$ 64 \ text {bits} = (6 \ gange 10 + 4) \ text {bits} = \ text {ki} ^ 6 \ gange 2 ^ {4} = 16 \ tekst {Ei adresser} $
Dette har en vis lighed og en vis forskel med base 10-systemet, som de (burde) kender. Først bryder vi det i blokke på 10 (i stedet for 3), resten konverterer vi bare til base 10, resten er den samme.
Hvor den bruges (hovedsageligt)
Det er vigtigt at vise, hvor de 2 systemer bruges. Mens nogle svar siger, at de aldrig har set det $ 1000 $ -baserede SI-system, der bruges i computing. Det viser sig, at SI-systemet bruges meget, afhængigt af hvad der måles.
- IEC 60027-2 A.2 og ISO / IEC 80000 f.eks. $ \ text {ki} $ :
- mål for primær hukommelse: RAM, RAM, cache.
- mål for filstørrelser , partitionsstørrelser og diskstørrelser inden for OS.
- SI-enheder f.eks $ \ text {k} $ :
- målinger af sekundære hukommelsesenheder: harddiske, SSDer.
- netværkshastigheder.
- CPU / hukommelse / bushastigheder.
- alle andre hastigheder.
Imidlertid er brugen af symbolet $ \ text {ki} $ bruges på dette tidspunkt ikke altid.
se også https://en.wikipedia.org/wiki/Binary_prefix
Kommentarer
- Dette svar rejser spørgsmålet.
- @prl Hvis du mener at undvige spørgsmålet (besvare et andet spørgsmål), så er du delvis korrekt. Jeg prøver at udvide andre svar. Og for at give nogle råd om “Hvordan”, hvor spørgsmålet var “Hvilket”.
- IMO er dette det bedste svar, men det kunne forbedres lidt ved eksplicit at nævne stil . Dvs. på samme måde som der er forskellige stilarter til citering af papirer eller til afgrænsning af lister (vide Oxford komma), er der forskellige stilarter til formatering af numre. I en IEC-publikation efter 2000 kan du antage, at husstil vil være SI / * bi. Andre organisationer / udgivere kan bruge andre stilarter.
- Ganske godt svar. To nitpicks: 0) For alle præfikser (k, M, Mi, Gi osv.) Skal du bruge romersk type, ikke kursiv; Jeg foreslår, at du bruger
\text{}
. 1) Ki skal have stort K. - @Nayuki “Det første bogstav i hvert sådant præfiks er derfor identisk med de tilsvarende SI-præfikser, bortset fra ” K “, som bruges ombytteligt med ” k “, hvorimod i SI kun små bogstaver k repræsenterer 1000. ” – da.wikipedia.org/wiki/Binary_prefix
Svar
Jeg har arbejdet inden for it professionelt siden midten af 1980erne. Min nuværende praksis er at skrive hvilken af f.eks. KB eller KiB jeg mener på det tidspunkt, hvor KB betyder $ 10 ^ 3 $ og KiB betyder $ 2 ^ {10} $. Hvis jeg taler om RAM i en maskine, skriver jeg f.eks. “64MiB”, og hvis jeg taler om den som fremstillede og markedsførte størrelse på en diskdrev Jeg skriver “1TB.” Jeg er ikke dog er jeg parat til at bruge ord som “mebibyte” i samtalen. Måske en dag vil jeg ændre mine verbale forkortelser fra f.eks. “meg” til “meb”, men jeg er ikke der endnu.
Kommentarer
- I ‘ har aldrig set inden for en lignende tidsramme er MiB osv. brugt til RAM. KB / MB / GB / TB som RAM-relaterede er altid 1024-baseret.
- Hvis du ‘ bruger store bogstaver K i kilo , du ‘ tager fejl.(Jeg har set folk blande millimeter med megamolar.)
- Jeg tror, at jeg ‘ d sagde / skriver ” binær megabyte ” for MiB end ” mebibyte “, men forkortelsen vil være OK .
- @MontyHarder: Hvad udtaler man fra em-byte?
- @supercat ” em-byte ” lyder som en forkortelse af megabyte. Det løser derfor ikke ‘ tvetydigheden, som MiB gør. Jeg finder MiB en nyttig forkortelse (” i ” infix repræsenterer ” b_i_nary “), men ordet ” mebibyte ” selv kommer ikke glat ud af min mund, hvis overhovedet.
Svar
Den grundlæggende forvirring er i notationen på KB (afledt af base 2) vs kB (SI-enhed) enhedsniveau, og det er nyttigt at forstå oprindelsen til brugen af baseenheden afledt af enhed.
En computer er en binær maskine.
På grundlæggende niveau er hukommelsesadressering binær. Normalt indtastes adresseringen på det programmatiske niveau i hexadecimalt format (det var oprindeligt binært); dog er hexadecimal også base 2 afledt (det er base 16 eller, 2 4 ) og er derfor direkte kompatibelt.
Begyndelse på KB-niveau til kommunikation af forståelse her er nyttigt, da begreberne base 2 afledte enheder har eksisteret siden før MB var i almindelig brug (ingen differentiering i præfiks fra SI-enhed).
På en hukommelsescontroller IC, hvis du forestiller dig, at adressevælgerne er en række switches (binære logiske porte) og afhængigt af hvordan de skiftes, får du hukommelsen læst fra en bestemt adresse på datalinjerne. Dataene gemmes og returneres som bytes.
Der har altid været et begrænset antal adresselinjer til rådighed for adressehukommelsen, og det sker således, at brug af binære komplette adressesæt til et givet antal adresseringsbit er basere 2 tal. Så på en 4KB-maskine er der 12 adresselinjer, der repræsenterer adresserne 0 til 4095 (4096 bytes). Disse 12 adresselinjer svarer til de 111111111111 adresser, der er mulige i binær, 0FFF i hexadecimal eller 4096 bytes i decimal. Det ville ikke være logisk at begrænse adressekortlægning til 4000 byte af hensyn til decimalkonvention, når der er 12 adresseringsbit til rådighed.
Denne logik fulgte oprindeligt også harddiske, hvor blokke er grupper af bytes, der er adgang til adresse (og jeg har ikke kontrolleret), hører jeg, at harddiskleverandører måske finder det mindre kritisk at bruge “runde adresseringsformater”, især i betragtning af følgende.
Alle standardværdier i computerterminologi er base 2 er afledt, selvom nogle leverandørers 20MB harddisk til markedsføringsformål muligvis ikke er så stor som nogle, der holder konventionen. Det er praktisk at slå 20MB på noget, selvom det ikke indeholder så mange blokke og er lettere at fremstille, fordi der kræves mindre datatæthed.
Tidlige IDE-harddiske (der var andre tidligere systemer før IDE) , før Logical Block Addressing (LBA) -systemet blev introduceret, bruges til at blive konfigureret af cylindre, hoveder og sektorer (CHS). Hele adresseringssystemet var binært, og endda standard Unix-værktøjer brugte 1024 byteblokke til visning. [1] Standardværktøjer som Conky bruger stadig base 2 til visning af RAM- og HDD-information, selvom den bruger GiB-format for at undgå forvirring. Senere tillod LBA-adresseringssystemet logisk kortlægning af CHS-formatet, da harddiskstørrelsen voksede, men LBA anvender simpelthen CHS-formatadresseringen internt i harddiskens indbyggede controller og tillader OS (og programmereren) at bare overveje de logiske blokke.
Basis 2-logikken følger med til større tal, for eksempel 11111111111111111111111111111111 bytes er 2 GB i standardbrug eller 7FFFFFFF byte i hexadecimal. Det er kun i decimal, hvor dette ser ut til at være tidy som 2.147.483.647 bytes, men den underliggende teknologi og konventioner er ikke decimaler. Computere er ikke decimalmaskiner; de er binære maskiner.
Netværksadressering bruger også binære masker på hver af de millioner af datapakker hvert sekund for at sikre korrekt routing, men det er lang tid siden datadelen af en netværkspakke ligner et base-2. Nummer. Sandsynligvis gør det yderste lag af pakken stadig {formodning}.
Du bliver uden tvivl nødt til at nævne, at der er forvirring, især når det kommer til markedsføring af produkter som en bestemt størrelse, og at der er nogle programitc-implementeringer til visning af værdier ved hjælp af SI-enheder (det er ingen længere ubelejligt eller langsommere {faktisk er det sandsynligvis stadig langsommere, men på moderne computere er det ikke længere mærkbart} for computerprogrammerere at implementere decimaler, især til display), men der kan ikke være tvivl om computerbrug, at det rigtige svar base 2-konventionen.
1024KB er JEDEC 100B.01 -standarden, hvilket betyder, at 1KB er 1024 bytes.
rel:
[1] Wikipedia – Cylinder-head-sector (CHS) – https://en.wikipedia.org/wiki/Cylinder-head-sector
Dette spørgsmål er grundigt undersøgt.
SuperUser – Størrelse af filer i Windows OS. (Det er “KB eller kB?) – https://superuser.com/questions/938234/size-of-files-in-windows-os-its-kb-or-kb
De fleste OSer og langt de fleste enheder, der beskæftiger sig med hukommelse / lagring, bruger præfikserne K for Kilo til at betyde 1024 byte, så når jeg får RAM, der siger, at det er “et 4 GB-modul, ved jeg, at det er 4 Gibi-Bytes (4 * 1024 * 1024 * 1024) og ikke Giga-Bytes (4 * 1000 * 1000 * 1000).
Quora – Hvor bruger vi 1 kB = 1000 byte, 1 MB = 1000 kB, 1 GB = 1000 MB, 1 TB = 1000 GB? Og hvor bruger vi 1 KB = 1024 bytes, 1 MB = 1024 KB, 1 GB = 1024 MB, 1 TB = 1024 GB? – https://www.quora.com/Where-do-we-use-1-kB-1000-bytes-1-MB-1000-kB-1-GB-1000-MB-1-TB-1000-GB-And-where-do-we-use-1-KB-1024-bytes-1-MB-1024-KB-1-GB-1024-MB-1-TB-1024-GB
Den anden idé blev formuleret af computerindustrien 1KB = 1024 bytes 1MB = 1024 KB 1GB = 1024 MB Bemærk! Jeg bruger stort B og ikke lille b, og stort B indebærer byte. Lille b skal ikke bruges. Dette er altid tilfældet og gælder for ting relateret til computere
Den første idé blev formuleret af telekommunikationsindustrien og kan ikke anvendes til datastørrelse (bits og bytes), men til datahastighed (bits pr. sekund eller bytes pr. sekund) 1 Kbps = 1000 bps (bit per sekund) 1 Mbps = 1024 Kbps 1Gbps = 1024 Mbps Bemærk! Jeg bruger lille b og ikke stort B, og lille b indebærer bits Hovedstaden B bør ikke bruges Dette er altid tilfældet og gælder for ting relateret til datatransmission
Kommentarer
- Hvorfor ikke ‘ t kommer forbi Klasseværelset (webstedet ‘ s chatrum) ?
Svar
Jeg tilføjer et andet svar for at afklare nogle problemer med spørgsmålet og for at fjerne den åbenlyse forvirring i svarene.
-
Spørgsmålet angiver forkert, at den sammenkædede IEC-kommunikation anbefaler KB at betyde 1000. Linket refererer kun til “kilo”.
-
kB kan betyde SI kilobyte, dvs. 1000 byte
-
KB gør og har altid betydet 1024 byte.
Nummer 3 er i det væsentlige den eneste nyttige definition i softwareteknik. Bemærk, at K er stort.
Der er også KiB, der svarer til KB . Bemærk, at kiloordet altid er repræsenteret af lille k. For OP at undervise i KB som 1000 er det altid forkert.
Ovenstående gælder ikke for MB og højere. Der er brugen tvetydig og afhænger af kontekst.
Kommentarer
- Bemærk, at mens KB som 1000 kan være flad forkert, er det ‘ er også nødvendigt for at lære, at mange mennesker gør dette forkert, og studerende må derfor aldrig stole på, at KB betyder 1024 uden yderligere kendskab til konteksten.
- @Peter enige 100% En bred diskussion af historie og kontekst på en måde, der er interessant og underholdende, kan hjælpe med at skelne en middelmådig fra en anstændig uddannelse.
- På hvilken måde er nummer 3 ” den eneste nyttige definition “?
- @immibis – det siges at være ” den eneste nyttige definition i softwareteknik “. På grund af den binære karakter af computerarkitektur og software er det ‘ sandsynligvis korrekt. Uden for diskussioner om computere og især software er det højst sandsynligt ikke korrekt.
- @KevinFegan: De eneste situationer, jeg kan tænke på, hvor jeg bruger store bogstaver K til 1000, bør ikke betragtes som værende simpelthen forkert, ville de hvor en lille ” k ” ikke er tilgængelig, f.eks. nogle situationer, der involverer skiltning eller begrænsede tegnsæt.
Svar
Lær dem, at uden kontekst ved du ikke, for der er helt sikkert mennesker derude, der vil bruge k til at betyde 1000 og andre der bruger k til at betyde 1024. Hvilket er rigtigt er ikke relevant, fordi begge anvendelser er derude.Dette efterlader enhver brug af “k” med bytes tvetydige, medmindre den, der har angivet nummeret, også specificerede, hvad de betød. IEC-præfiks ligesom Ki i stedet. 10 kB er tvetydig, 10 KiB er ikke.
Vi kan erklære, at visse anvendelser er “forkerte”, alt hvad vi ønsker, og jeg siger ikke, at det nødvendigvis er uberettiget, men det får ikke disse anvendelser til at forsvinde.
Kommentarer
- Ikke set mange decimalbaserede computere for nylig, så Kb, når der henvises til computer, er ikke ‘ t tvetydigt
- @Neuromancer Om det ‘ er tvetydigt eller ikke har intet at gøre med decimalbaserede computere …
- @smithkm Vis mig hvor k lille k er tvetydig.
- @Neuromancer Kb betyder … Måske kb. Åh, hastigheden på telefonmodem, der var almindelig indtil begyndelsen af 2000erne, blev givet i kb / s.
- @rexkogitans Det var Kbps for kilobit. pr. sekund. Naturligvis ville nogle netværksværktøjer skalere det til byte, og det ville være KB / s (normalt noget lignende), men modemerne var Kbps, ligesom nu kan det være Mbps eller Gbps (og så videre). Eller hvis du ‘ er yderst usandsynlig ja Kbps. (Måske skrev nogle det som kbps dog)
Svar
Lær dem begge, men fokuser på 1024 i problemer. De skal konvertere båndbredde osv. I netværk og andre kurser.
Konvertering ved hjælp af 1000 er let, men 1024 er vanskelig, så fokus på det, viden hjælper dem inden for computerarkitektur, montage og netværkskurser. De “bliver nødt til at arbejde med det en dag, så gør dem klar
Kommentarer
- @immibis ‘ @Lynob Hvis du ‘ gerne vil fortsætte denne diskussion, skal du gøre det i chat . Men hvis du simpelthen mener, at svaret er forkert, skal du nedstemme og gå videre .
Svar
De øvrige svar giver alle solide grunde til at undervise, at begge eksisterer, og hvor dårligt rodet den nuværende situation er. Dette er vigtigt, men det præciserer ikke, hvad de studerende foretrækker at bruge sig selv. Dette svar fokuserer på den praktiske side af, hvad de studerende kan gøre; efter at have lært om den aktuelle situation ud fra de andre svar.
Antag det værste tilfælde
Som med al usikkerhed i computing er den sikreste mulighed altid at antage det værste -case scenarie. Det vil sige for at minimere chancen for, at en forkert antagelse vil forårsage fejl.
I denne situation kan følgende anvendes til at dække dine baser:
-
Antag mængden af ressource, du har, er i multipla på 1000 byte.
-
Antag, at ressourcer, der bruges af tredjepartsbiblioteker osv., er i multipla på 1024 byte.
-
Angiv eventuelle tal for ressourcer, du bruger som multipla af 1000 Bytes.
Disse tre antagelser sikrer, at:
-
I værste fald vil du tro, at du har færre ressourcer, end du rent faktisk har. Hvis man for eksempel antager, at 4 kB RAM betyder “4000 Bytes”, kan det betyde, at du planlægger at have 96 færre Bytes, end du rent faktisk gør. Men det betyder, at du aldrig vil planlægge at have 96 Bytes mere, end du rent faktisk gør.
-
I værste fald antager du, at biblioteket, der sagde, at det bruger 2 kB RAM, betød, at det bruger 48 Bytes mere hukommelse, end det rent faktisk gør (antag, at det betød 2048, ikke 2000). Men du planlægger aldrig at bruge 48 Bytes mindre RAM end det faktisk gør.
-
I værste fald antager tredjeparter, at dit program bruger flere ressourcer, end det gør, ved at antage, at du mente 1024 Bytes per kB ikke 1000. Men du vil aldrig føre et uheld nogen til at tro, at den bruger mindre, end den faktisk gør.
Det er selvfølgelig ikke ideelt at skulle ” mister “ressourcer unødigt. Men i det generelle tilfælde er den lille forskel sandsynligvis ikke nok (især som studerende) til at gøre deres projekt umuligt. I de specifikke tilfælde, hvor det gør det, skulle de allerede måle de nøjagtige fodspor af alt og ikke antager størrelsen på noget fra dokumentation alene.
Fordelen er dog, at dine antagelser om, hvad en anden mente med “2kB” ikke vil skade dig, når de “tager fejl. Hvilket i dette specifikke tilfælde og som en generel lektion for dine elever – jeg synes er vigtigt.
Svar
“Hvilken konvertering skal jeg undervise for mine studenter? ”
Er dette ingeniørrelaterede undervisningskurser? Hvis ja, ville jeg have 1024 baseret på binær matematik, da det er det, ingeniørarbejde er baseret på.
Du kan tælle bitene på dine fingre:
- $ 1 $ finger = $ 2 $ stater, 0 og 1.
- $ 2,4,8,16,32,64, 128, 256, 512, 1024 $.Den højeste decimalværdi, der kan realiseres, er 1 mindre, mens antallet af repræsenterede stater er $ 2 ^ x $ liste.
- $ 2 ^ 1 -1 = 1 $. Derfor 0,1
- $ 2 ^ 2 – 1 = 3 $. Derfor er 0,1,2,3
- $ 2 ^ 3 – 1 = 7 $. Derfor 0,1,2,3,4,5,6,7
- osv. op til $ 2 ^ 8 – 1 = 255 $. Derfor siger 256 stater, fra 0 til 255.
Producenter kan annoncere som 2.2TB, men operativsystemet rapporterer det som 2TB eller måske endda 2TB anvendeligt.
Kommentarer
- Desværre forkert. Forskellige operativsystemer rapporterer forskelligt. Specielt de frugtagtige.
- Forkert, heldigvis. Anstændige operativsystemer rapporterer størrelser korrekt med GB = 1 milliard byte. De frugtagtige startede det.
- @ gnasher729: I betragtning af at allokeringsenheder er multipla på 512 byte på næsten ethvert operativsystem, giver rapportering af diskudnyttelse i enheder på 1024 byte meget mere mening for mig end rapportering i basere ti enheder.
Svar
I mine 26 år som professionel softwareingeniør har jeg aldrig stødt på KB til betyder alt andet end 1024.
Lær dem hvilke definitioner du kan lide, og sørg for at de ved, at 1024 er den eneste nyttige.
Kommentarer
- Kommentarer er ikke til udvidet diskussion; denne samtale er flyttet til chat . Diskussion er til chat, ikke til kommentarer, og enhver yderligere diskussion i kommentarerne slettes.