اولین بار است که به این وب‌سایت می‌آیید. راهنما را مطالعه کنید!
x
موسسه خیریه محک

شهر ریاضی بازی-ریاضی

مقدار بیتی متناظر با عدد اعشاری در IA64

0 امتیاز
70 نمایش

من از پردازنده‌ی ۶۴ بیتی اینتل استفاده می‌کنم. برنامه‌ی زیر رو نوشتم برای نشون دادن نمایش عدد اعشاری

float *f = new float();
int *i = new int();
i = reinterpret_cast<int *>(f);
std::bitset<32> *bs;

std::cin>>*f;
bs = new std::bitset<32>(*i);
std::cout<<*bs<<" == "<<*f<<std::endl;

خروجی برای عدد 23.5 برابر 01000001-10111100-00000000-00000000 شده که بنا بر دونسته‌های قبلی از نحوه‌ی ذخیره‌سازی عدد اعشاری اشتباهه. چرا؟

هیچ پژوهش انسانی نمی‌تواند ادعای علمی بودن داشته باشد، مگر این‌که از برهان ریاضی برخوردار باشد (لئوناردو داوینچی)
پرسیده شده پنجشنبه ۱۲ اردیبهشت ۱۳۹۲ در C++ توسط prodo  
بازتگ شده چهارشنبه ۱۶ مرداد ۱۳۹۲ توسط prodo

1 پاسخ

0 امتیاز

متوجه شدم که درسته

23.5 = 11001.1 = 1.10011 * 2^4
p = 4+127 = 131 = 10000011
c = 10011000000000000000000
23.5 = 0 100000011 10011000000000000000000
هیچ پژوهش انسانی نمی‌تواند ادعای علمی بودن داشته باشد، مگر این‌که از برهان ریاضی برخوردار باشد (لئوناردو داوینچی)
پاسخ داده شده دوشنبه ۱۴ مرداد ۱۳۹۲ توسط prodo