16位cpu 移位处理
生活随笔
收集整理的這篇文章主要介紹了
16位cpu 移位处理
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
以前和一位交換機的同事看一個問題,是在IC+的一個16位cpu上配置突破口處理的異常的問題:
u32 tmp = 0; tmp |= 1<<21;打印tmp的結果為0,非常之不科學。
后面發現,修改為:
u32 tmp = 0; u32 t = 1; t <<= 21; tmp|=t;打印結果正常。
后經過分析,原因為在16位的cpu中,對于 常量 1直接存在 16bit的寄存器中, 左移21位后就越界 為0,這個結果很正常。
如果需要用到32位的數,那必須定義變量來保量,以保證結果的正確性。
同時int 、指針大小,都會受cpu的影響 。
總結
以上是生活随笔為你收集整理的16位cpu 移位处理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 软件命令使用手册
- 下一篇: eCos Mbox机制