Nhiệm vụ của bạn là viết một chương trình, bằng bất kỳ ngôn ngữ nào, cộng hai số dấu phẩy động lại với nhau mà KHÔNG sử dụng bất kỳ phép toán phân số hoặc dấu phẩy động nào. Toán học số nguyên được cho phép.
định dạng
Định dạng cho các số là các chuỗi chứa 1 và 0 đại diện cho giá trị nhị phân của số float 32 bit 32 bit của IEEE . Ví dụ, số 2.54 sẽ được biểu thị bằng chuỗi "01000000001000101000111101011100".
Mục tiêu
Chương trình của bạn nên nhập hai số theo định dạng đã đề cập ở trên, cộng chúng lại với nhau và xuất kết quả theo cùng định dạng. Câu trả lời ngắn nhất trong bất kỳ ngôn ngữ nào sẽ thắng!
Quy tắc
Tuyệt đối không cho phép dấu phẩy động, số thập phân hoặc bất kỳ loại hàm toán học không nguyên nào.
Bạn có thể giả sử rằng đầu vào sạch (tức là chỉ chứa 1 và 0).
Bạn có thể giả sử rằng các đầu vào là số chứ không phải Inf, -Inf hoặc NaN hoặc không bình thường. Tuy nhiên, nếu kết quả lớn hơn giá trị tối đa hoặc nhỏ hơn giá trị tối thiểu, bạn nên trả về Inf và -Inf tương ứng. Một kết quả không bình thường (không bình thường) có thể bị xóa thành 0.
Bạn không phải xử lý làm tròn đúng cách. Đừng lo lắng nếu kết quả của bạn là một vài bit.
Xét nghiệm
Để kiểm tra các chương trình của bạn, bạn có thể chuyển đổi giữa các số nhị phân dấu thập phân và dấu phẩy động bằng công cụ này .
1000 + 0,5 = 1000,5
01000100011110100000000000000000 + 00111111000000000000000000000000 = 01000100011110100010000000000000
float.MaxValue + float.MaxValue = Infinity
01111111011111111111111111111111 + 01111111011111111111111111111111 = 01111111100000000000000000000000
321.123 + -123.321 = 197.802
01000011101000001000111110111110 + 11000010111101101010010001011010= 01000011010001011100110101010000
Chúc may mắn!