ページ 1 / 1
2進カウントアップ
Posted: 2011年2月16日(水) 17:40
by admin
実行結果が2進カウントアップ動作するプログラムを作りたいんですが、考えてもどうしてもわからないです・・
明後日のテストに似た問題を出すと言っていたのですが、先生に聞いても教えてくれませんでした。
繰り返し文(for文)あたりまで習っているのですが、難しくてわからないです↓↓
丸投げみたいになってすいませんが、教えてもらえないですか??
Re: 2進カウントアップ
Posted: 2011年2月16日(水) 17:48
by softya(ソフト屋)
分からないことが多いので、次のことに答えてもらえますか?
・使用言語はC言語ですか?
・表示というか出力はprintfですか?
・何桁の2進数ですか?
・使って良い標準関数や文法はありますか? 配列ok ポインタngなど。
・10進のカウントアップを作って、ここに貼ってください。
Re: 2進カウントアップ
Posted: 2011年2月16日(水) 18:29
by admin
もちろんC言語です。
出力はprintfで大丈夫です。
8桁の2進数です。
何を使ってもいいと思います。
カウントアップの作り方はわかんないです。
for文まで習っていたら作れるレベルなんでしょうか?
Re: 2進カウントアップ
Posted: 2011年2月16日(水) 18:30
by non
意味がわからないけど、こんなものを言っているのかな?
8ビットではないけど。
コード:
#include <stdio.h>
int count_bits(unsigned x)
{
int count=0;
while(x!=0){
if((x & 1U) == 1U) count++;
x >>=1;
}
return (count);
}
int int_bits(void)
{
return (count_bits(~0U));
}
void print_bits(unsigned x)
{
int i;
for(i=int_bits()-1;i>=0;i--){
putchar((((x >> i) & 1U) == 1U) ? '1':'0');
}
putchar('\n');
}
int main(void)
{
unsigned nx=0;
while(1)
print_bits(nx++);
return (0);
}
Re: 2進カウントアップ
Posted: 2011年2月16日(水) 18:34
by softya(ソフト屋)
>for文まで習っていたら作れるレベルなんでしょうか?
今までの話から、配列やポインタが使えると思えないのでそれは使わない方向で行きましょう。
[追記]関数も怪しいか・・・。
例えば10進のカウントだとfor文で1から10までカウントして、それを表示すれば良いだけです。
forとprintfを使えば作れますので作ってみてください。
※ 参考として習っていそうなコードなんですけどね。
Re: 2進カウントアップ
Posted: 2011年2月16日(水) 23:28
by admin
NONさんわざわざありがとうございす^^
確かに10進は言われればそうですね;;
でも2進はやはりわかんないです。
どうもすいませんでした
Re: 2進カウントアップ
Posted: 2011年2月16日(水) 23:52
by softya(ソフト屋)
まず、10進で良いので書いてみてくださいね。
そのコードをベースに2進化しましょう。
あっ変更点として10まででなく2進の8桁で表現できる最大値までループしてください。
Re: 2進カウントアップ
Posted: 2011年2月17日(木) 08:35
by non
admin さんが書きました:確かに10進は言われればそうですね;;
でも2進はやはりわかんないです。
おや、こういうことでは、なかったですか?
2進のカウントアップという意味はどういう意味なのですか?
コンピュータの内部では10進と言うより、むしろ2進だと思うのですが。
ただ単に、2進数で表示するという意味だとばっかり思ってました。