高校3年生です。c言語を学んでいます。疑問点があったので質問させていただきます。
現在、実現したい仕様は以下の通りです。
コマンドライン引数から整数を受け取り、ビット演算を用いてその値を2進数として標準出力する。
<実行例(完成したとき)>
c
1./test3 2 Usage: program <Length(byte)> <Integer number> 3./test3 1 43 4 00101011 5./test3 2 53018 6 11001111 00011010 7./test3 4 987654321 8 00111010 11011110 01101000 10110001
<補足>
コマンドラインから出力する長さと2進数出力する整数をうけとる。
出力する長さは1~4byteとする。
出力する長さと2進数出力する整数は、sscanfを用いて変数に代入する。
各bitごとの値を格納する配列bitのサイズは出力する長さから計算し、calloc()を用いて動的確保を行う。
<自分実現できていること>
10進数の値を2進数に変換する関数の作成
c
1void cv2bin(unsigned char n){ 2 int i; 3 for(i=DIGITS-1;i>=0;i--){ 4 printf("%d",(n>>i)&1); 5 } 6 printf("\n"); 7} 8int main(int argc,char*argv[]){ 9 10if(argc!=3){ 11printf("Usage: program <Length(byte)> <Integer number>\n"); 12exit(1); 13} 14 15unsigned char n; 16cv2bin(n);//2進数に変換 17 18return 0; 19} 20
<疑問点>
関数cv2binはきちんとビット演算を用いているといえるでしょうか?
コマンドライン引数からの2つの値を'unsigned n'にsscanfを用いて代入するにはどうすればよいでしょうか?
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。