#include <stdio.h>
#include <time.h>
#include <string.h>
int main(void) {
unsigned int a1 = 0xf3040506;
unsigned int *a = ( unsigned int *)&a1;
unsigned char *m = (unsigned char* )&a1;
unsigned long forcount = 300000000 ,i;
unsigned char r , g , b , al;
printf("r p %x\n", (unsigned char) *a
); printf("g p %x\n", (unsigned char) (*a
>> 8)); printf("b p %x\n", (unsigned char) (*a
>> 16) ); printf("a p %x\n", (unsigned char) (*a
>> 24) );
clock_t t;
for(i = 0;i < forcount ;i++)
{
r = m[0];
g = m[1];
b = m[2];
al = m[3];
}
printf ("pointer take (%f seconds).\n",((float)t
)/CLOCKS_PER_SEC
);
for(i = 0;i < forcount ;i++)
{
r = (unsigned char) *a;
g = (unsigned char) (*a >> 8);
b = (unsigned char) (*a >> 16);
al = (unsigned char) (*a >> 24);
}
printf ("shift take (%f seconds).\n",((float)t
)/CLOCKS_PER_SEC
);
m[0] = r;
m[0] = g;
m[0] = b;
m[0] = al;
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDx0aW1lLmg+IAojaW5jbHVkZSA8c3RyaW5nLmg+CgppbnQgbWFpbih2b2lkKSB7IAogICAgdW5zaWduZWQgaW50IGExID0gMHhmMzA0MDUwNjsKICAgIHVuc2lnbmVkIGludCAqYSA9ICggdW5zaWduZWQgaW50ICopJmExOwogICAgdW5zaWduZWQgY2hhciAqbSAgPSAodW5zaWduZWQgY2hhciogKSZhMTsKICAgIHVuc2lnbmVkIGxvbmcgZm9yY291bnQgPSAzMDAwMDAwMDAgICxpOwogICAgdW5zaWduZWQgY2hhciByICwgZyAsIGIgLCBhbDsKICAgIAogICAgCglwcmludGYoIiV4XG4iLCAqYSk7CgoJCglwcmludGYoInIgaSAleFxuIiwgbVswXSk7CglwcmludGYoImcgaSAleFxuIiwgbVsxXSk7CglwcmludGYoImIgaSAleFxuIiwgbVsyXSk7CglwcmludGYoImEgaSAleFxuIiwgbVszXSk7CgkKCQoJCglwcmludGYoInIgcCAleFxuIiwgKHVuc2lnbmVkIGNoYXIpICphICk7CglwcmludGYoImcgcCAleFxuIiwgKHVuc2lnbmVkIGNoYXIpICgqYSA+PiA4KSk7CglwcmludGYoImIgcCAleFxuIiwgKHVuc2lnbmVkIGNoYXIpICgqYSA+PiAxNikgKTsKCXByaW50ZigiYSBwICV4XG4iLCAodW5zaWduZWQgY2hhcikgKCphID4+IDI0KSApOwogIAoJCiAgICBjbG9ja190IHQ7CgkKICAgIHQgPSBjbG9jaygpOwoKICAgIGZvcihpID0gMDtpIDwgZm9yY291bnQgO2krKykgICAKICAgIHsgICAKCSAgciA9ICBtWzBdOwoJICBnID0gIG1bMV07CgkgIGIgPSAgbVsyXTsKCSAgYWwgPSBtWzNdOwogICAgfSAgIAogICAgdCA9IGNsb2NrKCkgLSB0IDsKICAKICAgIHByaW50ZiAoInBvaW50ZXIgdGFrZSAoJWYgc2Vjb25kcykuXG4iLCgoZmxvYXQpdCkvQ0xPQ0tTX1BFUl9TRUMpOwogICAgCiAgICAKICAgIHQgPSBjbG9jaygpOwoKICAgIGZvcihpID0gMDtpIDwgZm9yY291bnQgO2krKykgICAKICAgIHsgICAKCSAgciA9ICh1bnNpZ25lZCBjaGFyKSAqYTsKCSAgZyA9ICh1bnNpZ25lZCBjaGFyKSAoKmEgPj4gOCk7CgkgIGIgPSAodW5zaWduZWQgY2hhcikgKCphID4+IDE2KTsKCSAgYWwgPSAodW5zaWduZWQgY2hhcikgKCphID4+IDI0KTsKICAgIH0gICAKICAgIHQgPSBjbG9jaygpIC0gdCA7CiAgCiAgICBwcmludGYgKCJzaGlmdCB0YWtlICglZiBzZWNvbmRzKS5cbiIsKChmbG9hdCl0KS9DTE9DS1NfUEVSX1NFQyk7CgogICAgbVswXSA9IHI7CiAgICBtWzBdID0gZzsKICAgIG1bMF0gPSBiOwogICAgbVswXSA9IGFsOwogICAgcmV0dXJuIDA7Cn0=