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