データ処理を実行する場合、特に組み込みシステムを使用する場合、データを抽出するビット、データを設定するビット、データの上位4ビットを抽出するビット、データの上位8ビットを抽出するビットなどに遭遇することがよくあります。 。操作、実際のコードを見てみましょう。
パートⅠ
は、特定のデータの上位8ビットと下位8ビットを取得します。
void main(void)
{
short test_data;
unsigned char buf[2];
buf[0] = test_data;
buf[1] = test_data >> 8 ;
printf("buf1 = %d buf2 = %d\n",buf[0], buf[1]);
}
パートⅡ
データ合成、2バイトのデータを16ビットのデータに結合します。
(1)シフト操作
void main(void)
{
short new_data;
unsigned char buf[2];
buf[0] = 1;
buf[1] = 1;
new_data = ((*((uint8_t *)buf+ 1)<< 8))| *(uint8_t *)buf;
printf("data = %d\n",new_data);
}
(2)さらに、「ユニオン」ユニオンを使用してメモリブロックを共有することにより、新しいデータを取得できます。ユニオンはメモリ上書きテクノロジを使用し、2文字型のデータであるため一度に1つのメンバーの値しか保存できません。 16ビットは正確に短いタイプのデータのビット数であり、データは結合の方法でマージできます。
union data
{
unsigned char buf[2];
short test_data;
};
void main(void)
{
union data test;
test.buf[0] = 1;
test.buf[1] = 1;
printf("data = %d\n", test.test_data);
}