Computer Science Fundamentals

Floating Point Numbers

Single & Double Precision

Floating Point Илэрхийлэл

Floating Point Тоонууд гэж юу вэ?

  • Бутархай тоонуудыг Компьютерийн илэрхийлэл
  • Шинж ухааны үндсэн бичилтээр бичигддэг
  • Format: ±1.mantissa × 2^exponent
  • Бутархай тооны хэр их нарийвчилсан болон хоорондох тоог илэрхийлнэ.

Single Precision (32-bit)

S E E E E E E E E M M M M M M M M M M M M M M M M M M M M M M M
  • 1 bit: Sign (0 нэмэх, 1 хасах)
  • 8 bits: Exponent (bias of 127) (тооны зэрэг)
  • 23 bits: Mantissa (бутархай хэсэг)
  • Range: ±1.18 × 10^-38 to ±3.4 × 10^38
  • ~7 10-тын тооллын нарийвчлалтай.

Double Precision (64-bit)

S E E E E E E E E E E E M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M M
  • 1 bit: Sign (0 нэмэх, 1 хасах)
  • 11 bits: Exponent (bias of 1023)
  • 52 bits: Mantissa (бутархай хэсэг)
  • Range: ±2.23 × 10^-308 to ±1.80 × 10^308
  • ~15-17 10-тын тооллын нарийвчлалтай.

Converting to Binary: Үндсэн алхмууд

1. Эхлээд нэмэх хасах тоо эсэхийг шалгах.
2. 2-тын тооллын систем рүү хөрвүүлэх
3. Зэргийг нь бодох (127-г нэмэх)
4. Mantessa-г бодох (үлдэгдэл бодох)
5. 32 битийн урттайгаар бүгдийг нь нийлүүлэх

Example 1: 10.5-ийг 2-тын тооллын систем рүү хөрвүүлэх

Step 1: Sign
10.5 бол нэмэх → Sign bit = 0
Step 2: 2-тын систем рүү хөрвүүлэх
10 = 1010 in binary
0.5 = 1/2 = .1 in binary
10.5 = 1010.1₂ = 1.0101 × 2³
Step 3: Biased Exponent( Зэрэгт дэвшүүлэх )
3 + 127 = 130 = 10000010₂
Step 4: Mantissa
0101-ийг 0-оор үлдсэн битийг нөхөх = 01010000000000000000000

Example 1: Үр дүн

10.5 in Single Precision:

0 10000010 01010000000000000000000
Sign:     0         (positive)
Exponent: 10000010  (130 = 3 + 127)
Mantissa: 01010000000000000000000
Final:    0100000100101000000000000000000

Example 2: -0.75-г 2-т луу шилжүүлэх

Step 1: Sign
-0.75 is negative → Sign bit = 1
Step 2: Binary Conversion
0.75 = 0.11₂ = 1.1 × 2⁻¹
Step 3: Biased Exponent
-1 + 127 = 126 = 01111110₂
Step 4: Mantissa
1 padded with zeros = 10000000000000000000000

Example 2: Үр дүн

-0.75 in Single Precision:

1 01111110 10000000000000000000000
Sign:     1         (negative)
Exponent: 01111110  (126 = -1 + 127)
Mantissa: 10000000000000000000000
Final:    1011111101000000000000000000000

Example 3: Маш бага тоо

0.1-ийг 2-тын тооллын систем рүү шилжүүлэх

Step 1: Sign
0.1 is positive → Sign bit = 0
Step 2: 2-т луу шилжүүлэх
0.1₁₀ = 0.00011001100110011...₂ (repeating)
= 1.1001100110011... × 2⁻⁴
Step 3: Biased Exponent
-4 + 127 = 123 = 01111011₂

Example 3: Үр дүн

0.1 in Single Precision:

0 01111011 10011001100110011001101
Sign:     0         (positive)
    Exponent: 01111011  (123 = -4 + 127)
    Mantissa: 10011001100110011001101
    Final:    0011110111001100110011001100110

Note: 0.1 нь тэгэхээр яг сайн илэрхийлэгдэж чаддаггүй.

Зарим нэг онцгой тохиолдлууд

Number Sign Exponent Mantissa
0.0 0 00000000 00000000000000000000000
1.0 0 01111111 00000000000000000000000
-1.0 1 01111111 00000000000000000000000
0 11111111 00000000000000000000000
NaN 0 11111111 Non-zero

Үндсэн Arithmetic Жишээ

// Single Precision (float)
0.1 + 0.2 ≈ 0.30000001192092896

// Double Precision (double)
0.1 + 0.2 ≈ 0.30000000000000004

Зарим нэг 10-тын тооллын систем нь нарийвчилсан байдлыг 2-тын тооллын системд шилжүүлэх алдаанаас болоод илэрхийлэхэд хэцүү байдаг.

Challenges

Challenge 01

-0.25-ийг 2-тын тооллын систем рүү шилжүүл.

Шалгалт 2

2.75-ийг 2-тын тооллын систем рүү шилжүүл.

Challenge-1 Solution

-0.25-ийг 2-тын тооллын систем рүү шилжүүл.

Step 1: Sign
-0.25 is negative → Sign bit = 1
Step 2: Binary Conversion
0.25 = 0.01₂ = 1.0 × 2⁻²
Step 3: Biased Exponent
-2 + 127 = 125 = 01111101₂
Step 4: Mantissa
0.1 padded with zeros = 10000000000000000000000

-0.25 in Single Precision:

1 01111101 10000000000000000000000
Sign:     1         (negative)
Exponent: 01111101  (125 = -2 + 127)
Mantissa: 10000000000000000000000
Final:    1011111011000000000000000000000

Challenge-2 Solution

2.75-ийг 2-тын тооллын систем рүү шилжүүл.

Step 1: Sign
2.75 is positive → Sign bit = 0
Step 2: Binary Conversion
2 = 10₂ = 1.0 × 2¹
0.75 = 0.11₂ = 1.1 × 2⁻¹
Step 3: Biased Exponent
1 + 127 = 128 = 10000000₂
Step 4: Mantissa
1.1 padded with zeros = 10000000000000000000000

2.75 in Single Precision:

0 10000000 10000000000000000000000
Sign:     0         (positive)
Exponent: 10000000  (128 = 1 + 127)
Mantissa: 10000000000000000000000
Final:    0100000001000000000000000000000

Хэзээ аль нэгийг нь хэрэглэх вэ?

Single Precision

  • Graphics/3D
  • Mobile apps
  • Memory constraints
  • Lower precision needs

Double Precision

  • Scientific computing
  • Financial calculations
  • Large number ranges
  • High precision needs

References