程序仿真时为什么>>0,看到的数据相当于>>1呢??

2019-07-15 13:26发布

2222.png
上图ptr1按预想应该是右移一位,得到0x13;可是实际仿真发现
ptr1得到的数值是0x09,相当于>>2。
后来我使用ptr,发现>>0,得到的结果才是>>1的,这是咋回事?
请高手指点啊,想不懂!!





友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
5条回答
kuo608
2019-07-15 19:13
lee_st 发表于 2016-7-14 16:38
正解是
*ptr>>0相当于*ptr*1
*ptr>>1相当于*ptr*2

我本打算就是想操作地址的,本来我想通过这句:ptr =(uint16 *)  ((uint16)p1 + (((uint16)(p2-p1))>>1));
来达到折半查数组表的功能,可是仿真时我发现>>1指针指向的地址相当于>>2。这我就搞不懂了!
要是都改为char型的,运行地址都对。
请您帮我指点下,多谢了,确实搞不懂!!

一周热门 更多>