IEEE-754 Floating Point Converter
Sep 02 2020
ฉันมีเลขฐานสิบหกเป็นฐานลอย IEEE-754:
uint32_t _u_IEEE_754 = 0x41100000; //9.0
การแทนทศนิยมคือ: 9.0
ฉันทำงานใน C ภายใต้ระบบฝังตัว
ฉันต้องการรับส่วนจำนวนเต็มและทศนิยมแยกกันจากตัวเลขในเลขฐานสิบหก ฉันไม่สามารถใช้จุดลอย ฉันไม่รู้ว่าจะเริ่มจากตรงไหน ไอเดียไหนที่จะช่วยฉันได้มาก
คำตอบ
6 old_timer Sep 03 2020 at 03:40
Wikipedia มีเพจที่สวยงามในรูปแบบทศนิยม (IEEE-754 ต่างๆ)
0x41100000
0b010000010001000000 ....
0 10000010 001000000 ....
นัย 1
0 10000010 1.001000000 ....
0x82 = 130
0 130 1.0010000
บิตเครื่องหมายเป็นศูนย์ดังนั้นจำนวนบวก
2 ยกกำลัง 130-127 = 2 ยกกำลัง 3.
ดังนั้นเราจึงย้ายจุด "ทศนิยม" (ไบนารี) ไปที่ 3
1.001000000....
10.01000000....
100.1000000....
1001.000000....
ดังนั้น
0x41100000
คือ 1001.00000 ......
ซึ่งก็คือ 9.0
ค่อนข้างง่ายเมื่อคุณดูรูปแบบ (สำหรับการเข้ารหัสปกติ):
(-1)^sign x 2^(exponent-127) x 1.fraction