こんばんは、プログラミング初心者です。
8ビットの任意のデータに対し、以下の操作を行うプログラムを組んでいます。
・任意場所のビットをクリア(0にする)する関数bit_off
・任意場所のビットをセット(1にする)する関数bit_on
また、操作結果が確認できるように2進数で表示を行う関数DectoBinを組む。
しかし、指定したビットをオン、オフさせるプログラム(bit_off,bit_on)が解らず、組むことができませんので、教えていただきたいです。
また、ビット操作の結果を2進数で確認するプログラムも2進数で表示はできるのですが元データと違う値が表示され※、その原因が解らないので
合わせて回答をお願い致します。
※例えば、元データを255と入力すると値が00110010と表示されます。期待値としては11111111が表示されるようにしたいです。
--------------------ソースコード----------------------------------------------------------
#include <stdio.h>
/ビットクリア、セットの定数定義/
#define BIT_CLEAR 0
#define BIT_SET 1
/プロトタイプ宣言/
unsigned char bit_off(unsigned char data, int pos);
unsigned char bit_on(unsigned char data, int pos);
void DectoBin(unsigned char data);
int main(void)
{
unsigned char ucData; //元データを格納する変数
int Ope; //操作方法を格納する変数
int Pos; //操作箇所ビットを格納する変数
printf("元データ(0~255):"); scanf("%s", &ucData); printf("操作方法(0:クリア/1:セット):"); scanf("%d", &Ope); printf("操作箇所ビット(7/6/5/4/3/2/1/0):"); scanf("%d", &Pos); printf("変更前:"); DectoBin(ucData); if(Ope == BIT_CLEAR){ printf("変更後:"); DectoBin(bit_off(ucData,Pos)); }else{ printf("変更後:"); DectoBin(bit_on(ucData,Pos)); }
}
/操作箇所ビットで指定したビットをオフにする関数/
unsigned char bit_off(unsigned char data, int pos){
unsigned char ucRet; //ビット操作した結果を格納する変数
return ucRet;
}
/操作箇所ビットで指定したビットをオンにする関数/
unsigned char bit_on(unsigned char data, int pos){
unsigned char ucRet; ////ビット操作した結果を格納する変数
return ucRet;
}
/ビット操作の結果を2進数で表示する関数/
void DectoBin(unsigned char data){
char i = 0;
for ( i = 7; i >= 0; i--) { putchar(data & 1 << i ? '1' : '0'); } putchar(' '); putchar('\n'); return;
}
--------------------ここまで-------------------------------------------------------------------
ビット操作のオン、オフ処理に関しては丸投げになってしまい、申し訳ありません。
ご回答をお待ちしております。
以上
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/07/21 22:37
2017/07/22 04:44
2017/07/22 04:51