Các lượt nộp
    Danh sách bài
    Trang chủ
    Báo lỗi

    solution

    Đề bài: [Hệ điều hành Unix] Tách thành phần IEEE 754 (float)

    Tách dấu, số mũ, phần định trị của float (IEEE 754)

    Số thực float 32-bit theo chuẩn IEEE 754 gồm:

    • 1 bit dấu (bit 31): 0 dương, 1 âm.
    • 8 bit số mũ (bit 30..23): giá trị lưu (biased), bias = 127.
    • 23 bit phần định trị (mantissa, bit 22..0).

    Để đọc các bit, ta sao chép biểu diễn của float sang một số nguyên 32-bit (dùng union hoặc memcpy) rồi tách bằng phép bit.

    Cho một số thực (đọc bằng %f), hãy in trên ba dòng:

    1. bit dấu (0/1)
    2. trường số mũ thô (biased exponent, 0..255)
    3. phần định trị thô (mantissa, số nguyên 0..8388607)

    Ví dụ

    • Vào: 1.0
    • Ra: 0, 127, 0 (vì 1.0 = 0x3F800000).
    • Định dạng đầu vào:

      Một dòng: một số thực (đọc bằng %f).

    • Ràng buộc đầu vào:

      Giá trị biểu diễn được bằng float chuẩn (không NaN/Inf trong test).

    • Định dạng đầu ra:

      Ba dòng: bit dấu, exponent thô (biased), mantissa thô.

    Ví dụ:

    Đầu vào:

    1.0
    

    Đầu ra:

    0
    127
    0

    Giải thích:

    1.0 = 0x3F800000: dấu 0, mũ 127, mantissa 0.

    Đang tải editor...