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