每日一题(51)—— 大小端判断
生活随笔
收集整理的這篇文章主要介紹了
每日一题(51)—— 大小端判断
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
請寫一個C函數,若處理器是Big_endian的,則返回0;若是Little_endian的,則返回1。
嵌入式系統開發者應該對Little-endian和Big-endian模式非常了解。采用Little-endian模式的CPU對操作數的存放方式是從低字節到高字節,而Big-endian模式對操作數的存放方式是從高字節到低字節。例如,16bit寬的數0x1234在Little-endian模式CPU內存中的存放方式(假設從地址0x4000開始存放)為:
| 內存地址 | 存放內容 |
| 0x4000 | 0x34 |
| 0x4001 | 0x12 |
而在Big-endian模式CPU內存中的存放方式則為:
| 內存地址 | 存放內容 |
| 0x4000 | 0x12 |
| 0x4001 | 0x34 |
32bit寬的數0x12345678在Little-endian模式CPU內存中的存放方式(假設從地址0x4000開始存放)為:
| 內存地址 | 存放內容 |
| 0x4000 | 0x78 |
| 0x4001 | 0x56 |
| 0x4002 | 0x34 |
| 0x4003 | 0x12 |
而在Big-endian模式CPU內存中的存放方式則為:
| 內存地址 | 存放內容 |
| 0x4000 | 0x12 |
| 0x4001 | 0x34 |
| 0x4002 | 0x56 |
| 0x4003 | 0x78 |
聯合體union的存放順序是所有成員都從低地址開始存放,面試者的解答利用該特性,輕松地獲得了CPU對內存采用Little-endian還是Big-endian模式讀寫。
總結
以上是生活随笔為你收集整理的每日一题(51)—— 大小端判断的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 自动驾驶轨迹预测算法:NeurIPS挑战
- 下一篇: IOS-性能优化/内存优化常用方法小总结