static unsigned char font[] = {
0x38,
0x6C,
0xC6,
0xFE,
0xC6,
0xC6,
0xC6,
0x00
};
Answer:
#include <stdio.h>
#include <string.h>
void PRINT_STAR(int);
int main(void)
{
static unsigned char font[] = {
0x38,
0x6C,
0xC6,
0xFE,
0xC6,
0xC6,
0xC6,
0x00
};
int nRet = 0;
for (nRet = 0; nRet < 8; nRet++) {
PRINT_STAR(font[nRet]);
printf("\n");
}
return 0;
}
void PRINT_STAR(int X)
{
int nIndex = 8, nArray[8];
bzero((void *)nArray, sizeof(int) * 8);
while ( nIndex >= 0 ) {
nArray[--nIndex] = X % 2;
X /= 2;
}
for (nIndex = 0; nIndex < 8; nIndex++)
printf("%c", (nArray[nIndex] == 1)? '*': ' ');
return;
}
10. 寫一支程式能夠做到以下動作:k = rol(0xA3, 2); k = 0x8EAnswer: 先分析一下0xA3和0x8E的關係,
0xA3 ---> 10100011
0x8E ---> 10001110
所以,結論就是rol()這個函式能夠將所傳進去的第一個參數0xA3最左邊2個位元移到最右邊。
#include <stdio.h>
int rol(int, int);
int main(void)
{
int j = 0xA3, k = 2;
printf("rol(0x%X, %d) = 0x%X \n", j, k, rol(j, k));
return 0;
}
int rol(int a, int b) {
int x = a >> (8 - b);
a <<= b;
a &= 0xFF;
return (a + x);
}
相關文章:C語言測驗 (1),C語言測驗 (2)
沒有留言:
張貼留言