C では、unsigned char (2 桁の長さ) を取得し、1 桁目を別の unsigned char に格納し、2 桁目を別の unsigned char に格納する方法に興味がありました。
質問する
270 次
2 に答える
1
それはdigitsの意味によって異なります。
10 進数について話している場合は、各桁を抽出するために 10 (10 進数の基数) で繰り返し除算し、剰余を取得する必要があります。2 桁しかない場合、1 桁目は 10 で割るだけで抽出でき、2 桁目は 10 で割った余りを取得することで抽出できます。
16 進数について話している場合は、上記と同じことができますが、代わりに基数 16 を使用します。あるいは、1 バイトが 2 つの 4 ビット ニブルで構成され、それぞれが 16 進数で表現できるという事実を利用することもできます。したがって、上位 4 ビットが 1 桁目を構成し、下位 4 ビットが 2 桁目を構成します。
両方の方法を示す例を次に示します。
#include <stdio.h>
void hex_digits(void)
{
unsigned char uc = 0xAB;
unsigned char nyb_hi = uc >> 4;
unsigned char nyb_lo = uc & 0xF;
printf("High nybble: 0x%X, low: 0x%X\n", nyb_hi, nyb_lo);
}
void decimal_digits(void)
{
unsigned char uc = 12;
unsigned char d1 = uc / 10;
unsigned char d2 = uc % 10;
printf("First digit: %u, second: %u\n", d1, d2);
}
int main(void)
{
hex_digits();
decimal_digits();
return 0;
}
于 2012-10-28T03:31:41.013 に答える
1
あなたが10進数を話していると仮定すると、これを行うことができます:
unsigned char v = 42;
unsigned char tens = v / 10;
unsigned char ones = v % 10;
整数を 10 で割ると、1 が破棄されます。10 で割った余りを取得すると、残りの数が削除されます。
于 2012-10-28T03:22:46.223 に答える