✨Định dạng dấu phẩy động độ chính xác đơn

Định dạng dấu phẩy động độ chính xác đơn

Định dạng dấu phẩy động độ chính xác đơn (đôi khi còn gọi là FP32 hoặc float32) là một định dạng số máy tính, thường chiếm 32 bit trong bộ nhớ máy tính; nó có khả năng biểu diễn một dải động rộng các giá trị số bằng cách sử dụng dấu phẩy cơ số động.

Một biến số thực dấu phẩy động có khả năng biểu diễn một khoảng giá trị lớn hơn so với một biến dấu phẩy tĩnh có cùng kích thước bit at the cost of precision. Một biến số nguyên có dấu với kích thước 32 bit có thể nhận giá trị tối đa là 231 − 1 = 2.147.483.647, trong khi một biến dấu phẩy động cơ số 2 theo chuẩn IEEE 754 với kích thước 32 bit có thể nhận giá trị tối đa lên tới (2 − 2−23) × 2127 ≈ 3,4028235 × 1038. Tất cả các số nguyên có từ 7 chữ số thập phân trở xuống, và bất cứ giá trị 2n nào với điều kiện −149 ≤ n ≤ 127, đều có thể được chuyển đổi chính xác thành giá trị dấu phẩy động chính xác đơn theo chuẩn IEEE 754.

Theo tiêu chuẩn IEEE 754-2008, định dạng 32-bit cơ số 2 có tên chính thức là binary32; nó từng có tên gọi single trong chuẩn IEEE 754-1985. Ngoài ra IEEE 754 còn quy định về các kiểu số thực dấu phẩy động khác, như định dạng chính xác kép 64-bit cơ số 2, và gần đây hơn là các dạng biểu diễn bằng hệ 10.

Một trong những ngôn ngữ lập trình đầu tiên cung cấp các kiểu dữ liệu dấu phẩy động độ chính xác đơn và kép là Fortran. Trước khi IEEE 754-1985 được chấp thuận rộng rãi, cách biểu diễn và các thuộc tính của các kiểu dữ liệu dấu phẩy động đều phụ thuộc vào từng nhà sản xuất máy tính, từng mẫu máy tính và quyết định của các nhà thiết kế ngôn ngữ lập trình. Ví dụ, trong GW-BASIC, kiểu dữ liệu chính xác đơn được sử dụng là định dạng dấu phẩy động MBF 32-bit.

Định dạng chính xác đơn được gọi là REAL trong Fortran, SINGLE-FLOAT in Common Lisp, float trong C, C++, C#, Java, Float trong Haskell và Swift, và Single trong Object Pascal (Delphi), Visual Basic, và MATLAB. Tuy nhiên, các kiểu float trong Python, Ruby, PHP và OCaml cùng với single trong các phiên bản Octave trước 3.2 lại chỉ các số độ chính xác kép. Hầu hết các bản triển khai PostScript và một số hệ thống nhúng chỉ hỗ trợ định dạng chính xác đơn.

Tiêu chuẩn IEEE 754: binary32

Tiêu chuẩn IEEE 754 quy định một giá trị binary32 bao gồm:

  • Bit dấu: 1 bit
  • Kích thước mũ: 8 bit
  • Độ chính xác định trị: 24 bit (chỉ có 23 bit được lưu tường minh)

Định dạng này cho độ chính xác từ 6 đến 9 chữ số thập phân có nghĩa. Nếu một xâu thập phân có từ dưới 6 chữ số có nghĩa được chuyển đổi sang dạng biểu diễn chính xác đơn IEEE 754, sau đó được chuyển đổi lại thành một xâu thập phân có cùng số chữ số như ban đầu, kết quả sẽ giống hệt như xâu gốc.

Bit dấu quyết định dấu của giá trị số và cả dấu của phần định trị. Phần mũ là một giá trị nguyên 8 bit không dấu từ 0 đến 255, được lưu dưới dạng có độ lệch (biased exponent): nếu phần mũ được lưu có giá trị là 127 thì giá trị thực sự phải là 0. Giá trị thực của phần mũ chỉ nằm trong khoảng từ −126 tới +127 bởi các giá trị mũ −127 (toàn 0) và +128 (toàn 1) được dành cho các số đặc biệt.

Phần định trị thực bao gồm 23 bit biểu diễn phần lẻ nằm ở phía bên phải dấu phẩy nhị phân cộng thêm một bit hiểu ngầm (nằm bên trái dấu phẩy nhị phân) có giá trị 1, trừ khi tất cả bit ở phần mũ đều là 0. Do đó chỉ có 23 bit phần lẻ của định trị xuất hiện trong định dạng bộ nhớ, còn tổng độ chính xác phải là 24 bit (tương đương với log10(224) ≈ 7,225 chữ số thập phân). Các bit được sắp xếp như sau:

Hình:Float example.svg

  • sign: bit dấu
  • exponent: phần mũ
  • fraction: phần lẻ

Giá trị thực của một dữ liệu binary32 32 bit, có dấu, phần mũ lệch e (dạng số nguyên không dấu 8 bit) và phần lẻ 23 bit cho trước có thể được tính như sau : (-1)^{b{31 \times 2^{(b{30}b{29} \dots b{23})2 - 127} \times (1.b{22}b_{21} \dots b_0)2, tương đương với : \text{giá trị} = (-1)^\text{dấu} \times 2^{(E-127)} \times \left(1 + \sum{i=1}^{23} b_{23-i} 2^{-i} \right).

Trong ví dụ này:

  • \text{dấu} = b_{31} = 0,
  • (-1)^\text{dấu} = (-1)^{0} = +1 \in \{-1, +1\},
  • E = b_{30}b_{29} \dots b_{23} = \sum_{i=0}^{7} b_{23+i} 2^{+i} = 124 \in \{1, \ldots, (2^8 - 1) - 1\} = \{1, \ldots, 254 \},
  • 2^{(E-127)} = 2^{124-127} = 2^{-3} \in \{2^{-126}, \ldots, 2^{127}\} ,
  • 1.b_{22}b_{21}...b_{0} = 1 + \sum_{i=1}^{23} b_{23-i} 2^{-i} = 1 + 1\cdot 2^{-2} = 1,25 \in \{1, 1+2^{-23}, \ldots, 2-2^{-23}\} \subset [1; 2 - 2^{-23}] \subset [1; 2). do đó:
  • \text{giá trị} = (+1) \times 2^{-3} \times 1.25 = +0,15625.

Lưu ý:

  • 1+2^{-23} \approx 1,000\,000\,119,
  • 2-2^{-23} \approx 1,999\,999\,881,
  • 2^{-126} \approx 1,175\,494\,35 \times 10^{-38},
  • 2^{+127} \approx 1,701\,411\,83 \times 10^{+38}.

Mã hóa phần mũ

Phần mũ trong định dạng dấu phẩy động nhị phân độ chính xác đơn được mã hóa bằng cách biểu diễn offset-binary, với giá trị zero offset là 127; hay còn gọi là độ lệch mũ (exponent bias) trong chuẩn IEEE 754.

  • Emin = 01H−7FH = −126
  • Emax = FEH−7FH = 127
  • Độ lệch mũ = 7FH = 127

Do đó, để lấy được giá trị thực của phần mũ thông qua cách biểu diễn offset-binary, cần phải trừ giá trị offset 127 khỏi phần mũ được lưu.

Các trường hợp phần mũ lưu với giá trị 00H và FFH là các trường hợp đặc biệt.

Giá trị chuẩn hóa dương nhỏ nhất là 2^{-126} \approx 1,18 \times 10^{-38} và giá trị dương nhỏ nhất (dưới mức chuẩn hóa) là 2^{-149} \approx 1,4 \times 10^{-45}.

Giới hạn chính xác với các giá trị thập phân (từ 1 tới 16777216)

  • Các số thập phân từ 1 tới 2: khoảng cố định 2−23 (1+2−23 là số dấu phẩy động lớn nhất tiếp theo sau 1)
  • Các số thập phân từ 2 tới 4: khoảng cố định 2−22
  • Các số thập phân từ 4 tới 8: khoảng cố định 2−21
  • ...
  • Các số thập phân từ 2n tới 2n+1: khoảng cố định 2n-23
  • ...
  • Các số thập phân từ 222=4194304 tới 223=8388608: khoảng cố định 2−1=0.5
  • Các số thập phân từ 223=8388608 tới 224=16777216: khoảng cố định 20=1

Giới hạn chính xác với các giá trị nguyên

  • Các số nguyên từ 0 tới 16777216 có thể được biểu diễn chính xác (cũng áp dụng với các số nguyên âm từ −16777216 tới 0)
  • Các số nguyên từ 224=16777216 tới 225=33554432 được làm tròn lên bội số của 2 (số chẵn)
  • Các số nguyên từ 225 tới 226 được làm tròn lên bội số của 4
  • ...
  • Các số nguyên từ 2n tới 2n+1 được làm tròn lên bội số của 2n-23
  • ...
  • Các số nguyên từ 2127 tới 2128 được làm tròn lên bội số của 2104
  • Các số nguyên bằng hoặc lớn hơn 2128 được làm tròn thành "vô cùng".
👁️ 1 | 🔗 | 💖 | ✨ | 🌍 | ⌚
**Định dạng dấu phẩy động độ chính xác đơn** (đôi khi còn gọi là **FP32** hoặc **float32**) là một định dạng số máy tính, thường chiếm 32 bit trong bộ nhớ máy tính; nó có
Trong tin học, **dấu phẩy động** được dùng để chỉ một hệ thống biểu diễn số mà trong đó sử dụng một chuỗi chữ số (hay bit) để biểu diễn một số hữu tỉ. Thuật
nhỏ|Một tập tin bitmap **Định dạng tập tin** là một cách chuẩn để thông tin được mã hóa trong việc lưu trữ trong các file. Nó chỉ định cách các bit được sử dụng để
**Chính tả tiếng Việt** là sự chuẩn hóa hình thức chữ viết của ngôn ngữ tiếng Việt. Đây là một hệ thống quy tắc về cách viết các âm vị, âm tiết, từ, cách dùng
**GeForce** là một thương hiệu của các đơn vị xử lý đồ họa (GPU) được thiết kế bởi NVIDIA. Kể từ loạt GeForce 30, đã có mười bảy lần lặp lại thiết kế. Các sản
thumb|7 đơn vị cơ bản SI **Hệ đo lường quốc tế** (tiếng Pháp: **S**ystème **I**nternational d'unités; viết tắt: **SI**), là 1 hệ thống đo lường thống nhất được sử dụng rộng rãi trên thế giới.
CÔNG TY TNHH TMDV CƠ KHÍ NAM TIẾN được thành lập vào năm 2013, xuất phát từ nhu cầu cấp thiết của ngành công nghiệp nặng Việt Nam trong việc tiếp cận phôi tôn thép
**Dấu câu**, còn có tên gọi khác là **dấu chấm** (nay dùng để chỉ dấu "."), **dấu chấm câu**, là cách sử dụng khoảng trắng, các ký hiệu quy ước và các thiết bị đánh
**Động đất và sóng thần Ấn Độ Dương 2004**, được biết đến trong cộng đồng khoa học như là **Cơn địa chấn Sumatra-Andaman**, là trận động đất mạnh 9.3 _M_w xảy ra dưới đáy biển
Chì xé kẻ lông mày vỏ màu Đỏ CXK5 - NH15 - Tặng thêm khăn giấy đa năngShop:Chì xé kẻ lông mày bền màu chống thấm giúp các nàng có đường vẽ đẹp mắt để
thumb|Tia dòng rối la-de do huỳnh quang gây ra. Tia dòng này bao gồm một dãy dài các kích cỡ [[chiều dài, một đặc điểm quan trọng của dòng chảy rối]] thumb|Dòng chảy rối và
nhỏ|Một biểu tượng tượng trưng của ALU và tín hiệu đầu vào và đầu ra của nó, được biểu thị bằng các mũi tên chỉ vào hoặc ra khỏi ALU, tương ứng. Mỗi mũi tên
**Cú pháp ngôn ngữ (lập trình) C** là tập hợp các quy tắc nhằm xác định cách thức để viết và dịch trong ngôn ngữ lập trình C. :Thí dụ:
 // Dòng này sẽ
**Python** () là ngôn ngữ lập trình bậc cao đa năng. Triết lý thiết kế của nó nhấn mạnh khả năng đọc mã bằng cách sử dụng thụt lề đáng kể. Python có kiểu động
thumb|ADC 4 kênh ghép WM8775SEDS của Wolfson Microelectronics đặt trong card _Sound Blaster X-Fi Fatal1ty Pro_. **Mạch chuyển đổi tương tự ra số** hay **ADC** (viết tắt tiếng Anh: _Analog-to-Digital Converter_) là hệ thống mạch
_Cuốn [[The Compendious Book on Calculation by Completion and Balancing_]] Từ _toán học_ có nghĩa là "khoa học, tri thức hoặc học tập". Ngày nay, thuật ngữ "toán học" chỉ một bộ phận cụ thể
**Pascal** là một ngôn ngữ lập trình cho máy tính thuộc dạng mệnh lệnh và thủ tục, được Niklaus Wirth phát triển vào năm 1970. Pascal là ngôn ngữ lập trình đặc biệt thích hợp
**Phút góc** hay **phút cung** (còn nói tắt là _phút_; thuật ngữ tiếng Anh: _minute of arc_, _arcminute_, _minute arc_, viết tắt: MOA) là đơn vị đo góc; 1 phút góc tương đương độ. **Giây
**Hệ thống địa chỉ của Nhật Bản** được sử dụng để xác định một địa điểm cụ thể tại Nhật Bản. Khi được viết bằng các ký tự tiếng Nhật, các địa chỉ bắt đầu
**Kiểu phương tiện** (trước đây gọi là **kiểu MIME**) là định danh hai phần cho định dạng file và nội dung định dạng được truyền trên Internet. Internet Assigned Numbers Authority (IANA) là cơ quan
**MATLAB** là phần mềm cung cấp môi trường tính toán số và lập trình, do công ty MathWorks thiết kế. MATLAB cho phép tính toán số với ma trận, vẽ đồ thị hàm số hay
nhỏ|453x453px|Nấu chảy bằng laser có chọn lọc **Nấu chảy bằng laser có chọn lọc (SLM)** hoặc **thiêu kết laser kim loại trực tiếp** (**DMLS**) là một kỹ thuật tạo mẫu nhanh, in 3D (AM) được
liên_kết=https://en.wikipedia.org/wiki/File:AMD_Opteron_146_Venus,_2005.jpg|nhỏ|Opteron, CPU đầu tiên giới thiệu x86-64 vào năm 2003 liên_kết=https://en.wikipedia.org/wiki/File:AMD_x86-64_Architecture_Programmers_Manuals.jpg|phải|nhỏ|Bộ năm tập của _x86-64 Architecture Programmer's Guide_, được AMD xuất bản và phân phối vào năm 2002 **x86-64** (còn gọi là **x64**, **x86_64**, **AMD64**
**_Dòng xoáy_** là một tiểu thuyết của nữ nhà văn Trần Thị Nhật Tân, xuất bản lần đầu năm 1989 bởi Nhà xuất bản Thanh Niên. Tiểu thuyết bao gồm hai tập, theo chân cuộc
right|thumb|Kí hiệu tập hợp **số thực** (ℝ) Trong toán học, một **số thực** là một giá trị của một đại lượng liên tục có thể biểu thị một khoảng cách dọc theo một đường thẳng
**Biểu tượng cảm xúc** (tiếng Anh: emoticon /ɪˈməʊ.tɪ.kɒn/ US /ɪˈmoʊ.t̬ə.kɑːn/), viết tắt cho “emotion icon”, cũng được gọi đơn giản là emote, là một hình ảnh đại diện của các biểu hiện trên gương mặt
Class trong **C++** là khái niệm được người dùng định nghĩa như một kiểu dữ liệu đơn giản hay một cấu trúc dữ liệu, được khai báo bằng từ khóa **class, **nó chứa các biến
Trong lập trình máy tính, **Hợp ngữ** (hay **assembly**) thường được viết tắt là **asm** là bất kỳ ngôn ngữ lập trình cấp thấp nào có sự tương ứng rất mạnh giữa các tập lệnh
**Hệ thập phân** (**hệ đếm cơ số 10**) là hệ đếm dùng số 10 làm cơ số. Đây là hệ đếm được sử dụng rộng rãi nhất trong các nền văn minh thời hiện đại.
Trong khoa học máy tính, **tìm kiếm nhị phân** (), còn gọi là **tìm kiếm nửa khoảng** (_half-interval search_), **tìm kiếm logarit** (_logarithmic search_), hay **chặt nhị phân** (_binary chop_), là một thuật toán tìm
nhỏ|Một vi xử lý [[Sun Microsystems|Sun UltraSPARC II (1997)]] **SPARC** (**Scalable Processor Architecture**) là một kiến trúc tập lệnh (ISA) RISC ban đầu được phát triển bởi Sun Microsystems và Fujitsu. Thiết kế của nó
**Modbus** hay MODBUS là một giao thức truyền thông ở tầng Application theo mô hình OSI, hỗ trợ giao tiếp theo mô hình client/server giữa các thiết bị kết nối trong nhiều loại bus hoặc
**Châu Đại Dương** hay **Châu Úc** (_Oceania_) là một khu vực địa lý bao gồm Melanesia, Micronesia, Polynesia và Australasia. Châu lục này trải trên Đông Bán cầu và Tây Bán cầu, có diện tích
[[Siêu máy tính song song hàng loạt Blue Gene/P của IBM]] **Tính toán song song** (tiếng Anh: _Parallel computing_), là một hình thức tính toán trong đó nhiều phép tính và tiến trình được thực
phải|nhỏ|277x277px| Minh họa của một ứng dụng sử dụng libvorbisfile để phát file Ogg Vorbis Trong khoa học máy tính, **thư viện** là tập hợp các tài nguyên không biến động được sử dụng bởi
**In 3D Xây dựng** (c3Dp) hoặc **In Xây dựng 3D (3DCP)** đề cập đến các công nghệ khác nhau sử dụng in 3D làm phương pháp cốt lõi để chế tạo các tòa nhà hoặc
Trong đại số tuyến tính, **hạng** (rank) của một ma trận là số chiều của không gian vectơ được sinh (span) bởi các vectơ cột của nó. Điều này tương đương với số cột độc
In 3D có nhiều ứng dụng. Trong sản xuất, y học, kiến trúc, trong nghệ thuật và thiết kế tùy biến. Một số người sử dụng máy in 3D để tạo thêm máy in 3D.
**_Shit_** là một từ thường được coi là có nghĩa thô tục và tục tĩu trong tiếng Anh hiện đại. Đây là một danh từ có ý nghĩa là "phân", với vai trò là động
**Paris** () là thủ đô và là thành phố đông dân nhất nước Pháp, cũng là một trong ba thành phố phát triển kinh tế nhanh nhất thế giới cùng Luân Đôn với New York
Bài viết này là **danh sách các thuật toán** cùng một mô tả ngắn cho mỗi thuật toán. ## Thuật toán tổ hợp ### Thuật toán tổ hợp tổng quát * Thuật toán Brent: tìm
thumbnail|right|upright=1.35|Đồ thị của dưới dạng là hàm của một số thực dương Trong toán học, **logarit nhị phân** () là lũy thừa mà số cần phải được nâng lên để được số , nghĩa là
**RISC-V** (phát âm là "risk-five") là một kiến trúc tập lệnh (ISA) mã nguồn mở dựa trên kiến trúc tập lệnh _máy tính với tập lệnh đơn giản hóa_ (RISC). Dự án bắt đầu từ
[[Đồ thị hàm sin]] [[Đồ thị hàm cos]] [[Đồ thị hàm tan]] [[Đồ thị hàm cot]] [[Đồ thị hàm sec]] [[Đồ thị hàm csc]] Trong toán học nói chung và lượng giác học nói riêng,
**Nguyên tử heli** là nguyên tử đơn giản nhất kế tiếp sau nguyên tử hydro. Nguyên tử heli được cấu tạo từ hai electron quay quanh một hạt nhân chứa hai proton cùng với một
nhỏ|320x320px|Hoạt hình máy tính của một van dẫn động bằng trục cam **Trục cam** là cấu trúc bao gồm một trục và một cam được gắn chặt vào trục hoặc cam của bộ phận tách
nhỏ| Chương trình máy tính "Xin chào, thế giới" của [[Brian Kernighan (1978) ]] **Chương trình máy tính** là tập hợp các câu lệnh thực hiện một tác vụ cụ thể khi được máy tính
**_Robo Trái Cây_** (; tiếng Anh: _Fruity Robo_, Hán Việt: _Quả Bảo Đặc Công_) là một bộ phim hoạt hình của Trung Quốc do Công ty hoạt hình Lam Hồ (Quảng Châu) và Công ty
**Isabelle của Pháp, cũng là Isabel của Navarra** ( hay _Isabelle de Navarre_; tiếng Tây Ban Nha: _Isabel de Francia_ hay _Isabel de Navarra_; ; 1295 - 22 tháng 8, 1385), có biệt danh là
**Ruby** là một ngôn ngữ lập trình hướng đối tượng, có khả năng phản ứng. Theo tác giả, Ruby chịu ảnh hưởng bởi Perl, Smalltalk, Eiffel, Ada và Lisp. Ruby cung cấp nhiều mẫu hình