ইন stdint.h
(C99), বুস্ট / cstdint.hpp , এবং cstdint
(সি ++ 0x) হেডার নেই অন্যান্যের মধ্যে টাইপ int32_t
।
একই ধরণের স্থির আকারের ভাসমান পয়েন্টের ধরণগুলি রয়েছে? এরকম কিছু float32_t
?
ইন stdint.h
(C99), বুস্ট / cstdint.hpp , এবং cstdint
(সি ++ 0x) হেডার নেই অন্যান্যের মধ্যে টাইপ int32_t
।
একই ধরণের স্থির আকারের ভাসমান পয়েন্টের ধরণগুলি রয়েছে? এরকম কিছু float32_t
?
sizeof
অপারেটরটি ব্যবহার করেন । এরকম একটি প্রকার কার্যকর হবে যখন একটি অ্যালগরিদমের প্রয়োজন হয় এটি একটি নির্দিষ্ট নির্দিষ্ট আকারের।
sizeof
ধারাবাহিকভাবে মার্শালিং এবং নিরবচ্ছিন্ন ভাসমান ধরণের সমস্যা সমাধানে কীভাবে ব্যবহার করা যেতে পারে?
উত্তর:
বর্তমানে সি বা সি ++ স্ট্যান্ডার্ডগুলিতে এর মতো কিছুই নেই। আসলে, এমন কোনও গ্যারান্টি নেই যা মোটেই float
বাইনারি ফ্লোটিং-পয়েন্ট ফর্ম্যাট হবে।
কিছু সংকলক গ্যারান্টি দেয় যে float
প্রকারটি আইইইই -754 32 বিট বাইনারি ফর্ম্যাট হবে। কিছু না। বাস্তবে, float
আসলে বেশিরভাগ এম্বেড থাকা প্ল্যাটফর্মগুলিতে আইইইই -754 single
টাইপ হয় যদিও বিস্তৃত বিন্যাসে প্রকাশিত মূল্যায়নের কিছু সংকলক সম্পর্কে সাধারণ সতর্কতা প্রযোজ্য।
আইইইই--৫৪ সংশোধনীর জন্য ২০০৮ সালের সি ল্যাঙ্গুয়েজ যুক্ত করার বিষয়ে একটি কার্যনির্বাহী গ্রুপ আলোচনা করছে, যা এই জাতীয় টাইপডেফ যুক্ত করার পরামর্শ দেওয়ার বিষয়ে বিবেচনা করতে পারে। যদি এটি সিতে যুক্ত করা হয়, আমি আশা করি সি ++ মানকটি শেষ পর্যন্ত অনুসরণ করবে ...
জানতে চাইলে আপনার কিনা float
আইইইই 32-বিট টাইপ , পরীক্ষা করুন std::numeric_limits<float>::is_iec559
। এটি একটি সংকলন-সময় ধ্রুবক, কোনও ফাংশন নয়।
আপনি যদি আরও বুলেটপ্রুফ হতে চান std::numeric_limits<float>::digits
তবে এগুলি আইইইই স্ট্যান্ডার্ড ডাবল-স্পষ্টতা ব্যবহার করে স্নেহকূপে ব্যবহার করছেন না তা নিশ্চিত করে দেখুনfloat
। এটি 24 হওয়া উচিত।
যখন এটি আসে long double
পরীক্ষা করা আরও গুরুত্বপূর্ণ digits
কারণ এখানে কয়েকটি আইইইই ফর্ম্যাট রয়েছে যা এটি যুক্তিসঙ্গতভাবে হতে পারে: 128 বিট (অঙ্কগুলি = 113) বা 80 বিট (অঙ্কগুলি = 64)।
এটি float32_t
যেমন ব্যবহার করা ঠিক ততটা কার্যকর হবে না কারণ আপনি সাধারণত যদি ভেসেটিং পয়েন্ট হার্ডওয়্যার ব্যবহার করতে চান তবে পাওয়া যায় এবং কোনও সফ্টওয়্যার বাস্তবায়নে পিছিয়ে না পড়ুন।
long double
OS X এর (উভয় 32 বিট এবং 64-বিট Intel) এ বিন্যাস ঠিক আইইইই-754 ডবল বর্ধিত অল্প endian অনুক্রমে সঞ্চিত ফরম্যাট। এ সম্পর্কে মজাদার কিছুই নয়। বাইটস 0-7 হ'ল তাৎপর্যপূর্ণ ক্ষেত্রটি ধরে রাখে এবং 8 এবং 9 এর বাইটগুলি খাঁজ এবং সাইন ক্ষেত্রগুলিকে ধারণ করে।
5.0L
এর তাত্পর্য রয়েছে a000000000000000
। এর নিরপেক্ষ ঘাঁটিঘটিতটি +২ হয় এবং দ্বিগুণ প্রসারিত এক্সপোঞ্জার পক্ষপাতিত্ব হয় 3fff
, সুতরাং 5.0L এর পক্ষপাতদুষ্ট প্রকাশক হয় 4001
। লিটল-এন্ডিয়ান অর্ডারে সঞ্চিত হওয়ার পরে আসল বাইট প্যাটার্নটি হ'ল 00 00 00 00 00 00 00 a0 01 40
এবং যদি আপনি দেখতে পান যে দুটি লিটল এন্ডিয়ান 64৪-বিট ইন্টিজার হিসাবে দেখা যায়, আপনি ঠিক কী দেখতে পেয়েছেন তা দেখতে পাবেন।
4001
লিটল-এন্ডিয়ান এ 01 40 00 00 ...
অন্য কিছু না হলে, কমপক্ষে উল্লেখযোগ্য বাইটটি প্রথম আসে। আমি অনুক্রমটি a0 01 40
কোথাও কোথাও কোথাও প্রদর্শিত হবে বলে আশা করি (যদি তারা কেবল একটি ঘূর্ণন সম্পাদন করে) তবে আপনি কেন ব্যাখ্যা করেছেন a0
এবং কেন 01 40
সম্পূর্ণ পৃথক অর্ধে রয়েছেন তা আমি মনে করি না ।
আপনি যদি ভাবেন যে কোনও কারণেই ফ্লোট 32_ টি এবং ফ্লোট 64_ টি জাতীয় টাইপফাইসগুলি ব্যবহারিক ব্যবহারমূলক নয়, আপনার অবশ্যই আপনার পরিচিত ওএস, সংকলকটির সাথে খুব বেশি অভ্যস্ত হওয়া উচিত যে আপনি নিজের ছোট্ট নীড়ের বাইরেও দেখতে অক্ষম।
এখানে এমন হার্ডওয়্যার রয়েছে যা স্থানীয়ভাবে 32-বিট আইইইইই ফ্লোটিং পয়েন্ট অপারেশন এবং অন্যান্যরা 64-বিট করে। কখনও কখনও এই জাতীয় সিস্টেমগুলি এমনকি প্রত্যেকের সাথে কথা বলতে হয়, এক্ষেত্রে প্রতিটি প্ল্যাটফর্মের উপর একটি ডাবল 32 বিট বা 64 বিট কিনা তা জানা অত্যন্ত গুরুত্বপূর্ণ। যদি 32-বিট প্ল্যাটফর্মটি অন্যটি থেকে 64-বিট মানগুলির ভিত্তিতে অতিরিক্ত গণনা করা হয়, তবে আমরা সময় এবং গতির প্রয়োজনীয়তার উপর নির্ভর করে নিম্ন নির্ভুলতায় কাস্ট করতে পারি।
আমি আমার প্ল্যাটফর্মে ঠিক কত বিট রয়েছে তা সঠিকভাবে না জানলে আমি ব্যক্তিগতভাবে ভাসা এবং ডাবলগুলি ব্যবহার করে অস্বস্তি বোধ করি। এরপরেও যদি আমি এগুলি কোনও যোগাযোগের চ্যানেলে অন্য প্ল্যাটফর্মে স্থানান্তর করি।
ভাষাতে নিম্নলিখিত ধরণের যুক্ত করার প্রস্তাব রয়েছে:
decimal32
decimal64
decimal128
যা একদিনের মাধ্যমে অ্যাক্সেসযোগ্য হতে পারে #include <decimal>
।
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n3871.html
decimal24
24 বিট নমুনা সহ wav ফাইলগুলি পড়ার মতো জিনিসগুলিও আমাদের তৈরি করা দরকার !