कुछ सूत्रों का कहना है कि आईईईई 754 फ्लोट हमेशा छोटे-एंडियन को संग्रहीत करते हैं लेकिन फ्लोटिंग पॉइंट नंबरों के लिए आईईईई 754 विनिर्देश केवल एंडियननेस समस्या को कवर नहीं करता है और मशीन से मशीन में भिन्न हो सकता है। यहाँ चल बिन्दु/बाइट सरणी रूपांतरण के लिए नमूना कोड है:
#include <stdio.h>
int main(int argc, char** argv){
char *a;
float f = 3.14159; // number to start with
a = (char *)&f; // point a to f's location
// print float & byte array as hex
printf("float: %f\n", f);
printf("byte array: %hhX:%hhX:%hhX:%hhX\n", \
a[0], a[1], a[2], a[3]);
// toggle the sign of f -- using the byte array
a[3] = ((unsigned int)a[3])^128;
//print the numbers again
printf("float: %f\n", f);
printf("byte array: %hhX:%hhX:%hhX:%hhX\n", \
a[0], a[1], a[2], a[3]);
return 0;
}
यह थोड़ा-भारतीय मशीन पर उत्पादन है:
फ्लोट: ३.१,४१,५९० बाइट सरणी: D0: एफ: 49: 40 फ्लोट: -3.141590 बाइट सरणी: D0: F: 49: C0
सैद्धांतिक रूप से, एक बड़ी-एंडियन मशीन पर बाइट्स का क्रम उलट दिया जाएगा।
संदर्भ: http://betterexplained.com/articles/understanding-big-and-little-endian-byte-order/
स्रोत
2012-01-29 22:05:47
endianness रास्ता मूल्यों _all_ मल्टी-बाइट प्रकार के लिए स्मृति में प्रतिनिधित्व कर रहे हैं प्रभावित करता है। इस मामले में फ्लोट 32-बिट पूर्णांक से अलग नहीं हैं। –
4 बाइट बस रिवर्स ऑर्डर में संग्रहीत हैं। –
मुझे क्या confuses कि चल बिन्दु प्रतिनिधित्व (एक पूर्णांक की तरह) बाइट में splited नहीं है। साइन 1 बिट है, एक्सपोनेंट 8 बिट्स और महत्व 23 है। ऑर्डर को उलट करने से मूल्यों तक पहुंचना मुश्किल हो जाएगा। –