devnews.pl

Main Menu

  • Informacje
    • Systemy i przeglądarki
    • Gadżety
  • Narzędzia
  • Frontend
  • Backend
  • QA
  • Języki programowania

logo

devnews.pl

  • Informacje
    • Systemy i przeglądarki
    • Gadżety
  • Narzędzia
  • Frontend
  • Backend
  • QA
  • Języki programowania
Informacje
Home›Informacje›Typ Half – nowy typ danych w .NET 5 Preview 7

Typ Half – nowy typ danych w .NET 5 Preview 7

By Bernadeta Zapała
1 września 2020
99
0
Share:

Typ Half jest nowym zmiennoprzecinkowym typem danych wprowadzonym przez firmę Microsoft do .NET 5 Preview 7. Dotychczas w specyfikacji IEEE 754 zdefiniowano wiele innych typów, takich jak binary16, binary32 (w C# float), binary64 (odpowiednik double w C#) czy binary128. Zmienne tego typu zapewniają standardowy format, dzięki któremu przekazuje się szeroki zakres wartości. W NET zawsze miał zmienne typu float oraz double. Teraz dodano zmienną Half, odpowiednik binary16.

Typ Half

Half określono w standardzie IEEE 754 dla arytmetyki zmiennoprzecinkowej. Ten typ jest zdefiniowany jako 16-bitowy format wymiany o podstawie 2. Zajmuje 16 bitów, o połowę mniej niż float. Bity podzielono następująco – jeden bit znaku, pięć bitów wykładnika i 10 bitów mantysy. Mantysa posiada jeden ukryty bit, który nie jest przechowywany. Reprezentuje wartości z zakresu ± 65504. Służy do wymiany danych między implementacjami. Dzięki nowemu typowi zmiennej oszczędza się miejsce w pamięci, tam, gdzie wynik nie musi być przechowywany z pełną precyzją.

Zmienna Half – zapis

Ogólnie typ zmiennej zapisuje się w następującej postaci:

-1^(bit znaku)*2^(zapisany wykładnik -15)*(ukryty bit+(znaczące bity/1024))

Liczba jeden przy pomocy typu half zapisuje się jako:

0 01111 0000000000 = 1

Pierwszy bit – 0 – oznacza liczbę dodatnią. Dalej, bity wykładnika – 01111 (w postaci dziesiętnej – 15), które jednak nie reprezentują bezpośrednio wykładnika, a tylko jego odchylenie. Właściwy wykładnik wyprowadza się przez odjęcie 15 od zapisanego wykładnika. Mantysą jest 0000000000, co interpretuje się jako liczbę .significand (o podstawie 2), czyli 0. Dalej – bity wykładnicze to nie zera, czyli ukrytym bitem jest 1.

0 01111 0000000000 = 2 ^ 0 * ( 1 + 0 / 1.024 ) = 1

Jednak ciekawostką jest to, że zmienna Half może przechowywać dodatnie i ujemne zero:

1 00000 0000000000 = -0

0 00000 0000000000 = +0

Podsumowanie

Typ Half można także konwertować na float lub double. Z typu Half korzysta wiele obciążeń obliczeniowych – machine learning, najnowsze procesory, a także karty graficzne. W uczeniu maszynowym obliczenia korzystając ze zmniejszonej precyzji przyśpieszają kalkulację i przede wszystkim zmniejszają przestrzeń dyskową. Wiele aplikacji może zostać odblokowanych dzięki tej zmiennej. Przypuszcza się, że wkrótce typ Half będzie obsługiwał język C# jako typ danych.

Źródło: Neowin, Microsoft DevBlogs

Tags.NET 5.NET PREVIEW 7C#data typeMicrosoftMicrosoft Net Development

Share:

  • Informacje

    Nowa dokumentacja GitHub – docs.github.com

  • FrontendNarzędzia

    WebStorm 2020.2 Beta – wsparcie WebP i inne zmiany

  • Narzędzia

    Pnpm 5.0 – lżejszy menedżer pakietów JavaScript

  • 15 stycznia 2021

    TypeScript 4.2 Beta z ulepszeniami typów krotek

  • 13 stycznia 2021

    Styczniowy Patch Tuesday z luką 0-day

  • 11 stycznia 2021

    Safari Technology Preview 118 dostępne dla programistów

  • 8 stycznia 2021

    Microsoft Launcher na Androida z usprawnionym dotykiem

  • 7 stycznia 2021

    WebStorm 2020.3.1 dostępny dla urządzeń z Apple Silicon

  • 22 grudnia 2020

    ReScript 8.4 z przypiętymi zależnościami

  • 14 grudnia 2020

    Edge 88 beta i przeglądarka na kanale Canary dostępne!

  • 9 grudnia 2020

    Chrome 88 Beta z nowościami w WebXR

  • 9 grudnia 2020

    Snowpack 3.0 RC z eksperymentalnymi funkcjami

  • 4 grudnia 2020

    Android Studio Arctic Fox – nowe wydanie narzędzia Google

  • 4 grudnia 2020

    The Hack Summit 2020 – konferencja IT Security

  • 2 grudnia 2020

    PowerToys 0.27 z poprawkami błędów

  • 2 grudnia 2020

    Aleph.js alfa z funkcją importowania map

  • 27 listopada 2020

    Cypress 6.0 zwiększa zakres możliwości obsługi sieci

  • 26 listopada 2020

    Firefox 83 przyspiesza i wprowadza tryb HTTPS-Only

  • 25 listopada 2020

    Electron 11.0 z obsługą Apple Silicon

  • 25 listopada 2020

    Prettier 2.2 z obsługą najnowszego TypeScript 4.1

  • 24 listopada 2020

    Tailwind CSS 2.0 z narzędziami kontroli tekstu

  • 20 listopada 2020

    Angular 11 – stabilne wydanie platformy

  • 19 listopada 2020

    Chakra UI React v1 wydany z ulepszeniami

  • 19 listopada 2020

    Chrome 87 z szybszym startem i zmianami w kartach

  • 18 listopada 2020

    Silnik WebKit w przeglądarce Safari 14

  • 17 listopada 2020

    Poznańska konferencja POZITIVE TECHNOLOGIES 2020 platformą wymiany wiedzy i doświadczeń najlepszych specjalistów IT

  • 16 listopada 2020

    Babylon.js 4.2 z edytorem cząsteczek i Babylon React Native

  • 13 listopada 2020

    Apple Silicon M1 i MacBooki – spotkanie One More Thing

  • 12 listopada 2020

    .NET 5.0 Microsoftu z poprawioną wydajnością

  • 12 listopada 2020

    Windows Terminal 1.5 Preview z nowymi funkcjami

  • 10 listopada 2020

    GIMP 2.99.2 – pierwszy krok do głównej wersji

  • 6 listopada 2020

    iOS 14.2 dostępny z nowymi emotikonami

  • 6 listopada 2020

    Node.js 15.1.0 – pierwsza aktualizacja stabilnego wydania

 

 

Jesteśmy pasjonatami najnowszych technologii w świecie programowania. Zbieramy dla Was informacje i porady z całego świata, które sprawią, że Twoja praca stanie się jeszcze bardziej efektywna.

Obserwuj nas codziennie, aby być na bieżąco oraz śmiało udostępniaj nasze posty.

Zespół DevNews

Kategorie

  • Backend
  • Bez kategorii
  • Frontend
  • Gadżety
  • Informacje
  • Języki programowania
  • Narzędzia
  • QA
  • Systemy i przeglądarki

OBSERWUJ NAS

KONTAKT

Chcesz się z nami skontaktować?

Napisz do nas wiadomość: kontakt@devnews.pl

www.devnews.pl | DEVNEWS 2020 | Newsy i ciekawostki ze świata IT