今天突然遇到一个奇怪的问题,代码如下/* main.c */#include int main (void){ int dat = 0xFFFFFFFF; while (dat) { printf ( "%x\n",dat); dat >>= 1; } return (0);}#gcc -g -Wall main.c #./aFFFFFFFFFFFFFFFF.................^C# 我一直以为 signed 和 unsigned 的区别在于编译器对待他们的态度,底层永远是补码,这样,0xFFFFFFFF,按我的设想,一定是32个循环完事,因为无论 Read More
posted @ 2013-10-17 17:42
moon_cat
Views(280)
Comments(0)
Diggs(0)
例如 0xFFFF0000 倒转 0x0000FFFF开始的时候想到一个办法,是这样:/* 32 位机器 */static unsigned reverse (unsigned dat){ int i = 0,low,high; for (i = 0 ;i >i ; high = (dat & (1>(31-i) ; dat = (dat & ~((1>= 1; }while (dat);}这个就简单多了,没有用乘除,只用累加即可。。。。。。。。 Read More
posted @ 2013-10-17 16:53
moon_cat
Views(178)
Comments(0)
Diggs(0)

浙公网安备 33010602011771号