掲示板利用宣言

 次のフォームをすべてチェックしてからご利用ください。

 私は

 題名と投稿者名は具体的に書きます。
 課題の丸投げはしません。
 ソースの添付は「HTML変換ツール」で字下げします。
 返信の引用は最小限にします。
 環境(OSとコンパイラ)や症状は具体的に詳しく書きます。
 返信の付いた投稿は削除しません。
 マルチポスト(多重投稿)はしません。

掲示板2

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧

No.25276

助けてください
投稿者---らっぱ(2006/01/13 19:30:33)


今、課題が出ているのですが、それをやらないと単位がもらえないらしいのですが、まったく手をつけられないのでこちらで、質問させていただきます。
「入力した整数のビット列(2進数)で出力する」という問題で、シフト演算子とマスクを繰り返して求めるとのことなのですが、授業についていけていないのでまったくわかりません。誰か教えていただけないでしょうか?


この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> Re:助けてください 25277 らっぱ 2006/01/13 19:31:53
<子記事> もう一年 25278 ぽへぇ 2006/01/13 19:51:31
<子記事> Re:助けてください 25279 iijima 2006/01/13 19:55:59
<子記事> Re:助けてください 25282 管理人 2006/01/13 20:57:59
<子記事> Re:助けてください 25298 επιστημη 2006/01/14 08:00:25


No.25277

Re:助けてください
投稿者---らっぱ(2006/01/13 19:31:53)


あと、追加なのですがビット列中の1の数も求めるにはどうすればよいでしょうか?


この投稿にコメントする

削除パスワード

No.25289

Re:助けてください
投稿者---si(2006/01/13 22:42:54)


>あと、追加なのですがビット列中の1の数も求めるにはどうすればよいでしょうか?
高速にbit列の、立っているビットを数える:

下記は、確か昨年この掲示板にのったこともある
高速に bit count する、有名なアルゴリズムです。
0011 0000 0110 0000 0011 0000 0110 0000 -> 8

// 32bit 整数のbit count
int bit_cnt(int bits)
{
  bits = (bits & 0x55555555) + (bits >> 1 &0x55555555);
  bits = (bits & 0x33333333) + (bits >> 2 &0x33333333);
  bits = (bits & 0x0f0f0f0f) + (bits >> 4 &0x0f0f0f0f);
  bits = (bits & 0x00ff00ff) + (bits >> 8 &0x00ff00ff);
  return (bits & 0x0000ffff) + (bits >>16 &0x0000ffff);
}

整数の2進表示
void bits_print(unsigned int n)
{
  #define push(c) buf[--tos] = c
  char buf[128];
  int i,tos = 128;

  push('\0');
  for ( i = 0; i < sizeof(unsigned int)*8 ; i++) {
    if ( n & 1)
      push('1');
    else
      push('0');
    n >>= 1;
  }
  printf("%s\n",&buf[tos]);
}
この程度のサンプルは、ネットにごろごろしています。

教科書も読まない、授業も受けない、ネットで検索もしたくないのなら、
学校続けるの考えた方が良いんじゃないのかな。


この投稿にコメントする

削除パスワード

No.25278

もう一年
投稿者---ぽへぇ(2006/01/13 19:51:31)


>授業についていけていないのでまったくわかりません。

なら、もう一年。
この掲示板で回答が得られ、
それで単位をもらっても意味がないのは
あなた自身がよくわかっているはずです。



この投稿にコメントする

削除パスワード

No.25279

Re:助けてください
投稿者---iijima(2006/01/13 19:55:59)


掲示板利用宣言に反することが多々ありますので、このままでは望むような回答は得られません。

少なくとも土曜、日曜と2日間あるのですから、必死で勉強すればなんとかなると思います。
それでもどうしても分からないところがあったら、2日間の努力の結果を示した上で改めて質問すれば、
回答が得られる可能性はあります。



この投稿にコメントする

削除パスワード

No.25282

Re:助けてください
投稿者---管理人(2006/01/13 20:57:59)


> 今、課題が出ているのですが、それをやらないと単位がもらえないらしいのですが、
> まったく手をつけられないのでこちらで、質問させていただきます。

学校でC言語を教えています。
先生によって識別子の名付け方や字下げの仕方が微妙に異なります。
掲示板などで教えてもらった解答は教えたスタイルと違うので見ればすぐにわかります。
掲示板の答えを丸写ししているのが発覚した場合、当然単位はあげられません。

ここのホームページの「14-1.ビット演算子」は参考になると思います。
ご自分で勉強してみてください。



この投稿にコメントする

削除パスワード

No.25286

Re:助けてください
投稿者---Hermit(2006/01/13 21:49:06)


>掲示板などで教えてもらった解答は教えたスタイルと違うので見ればすぐにわかります。

まともに勉強したら、スタイルは個人ごとに変わってこない?
特に、学生などだったら、わざわざスタイル変えて、
自己顕示したくなると思うけど。

>掲示板の答えを丸写ししているのが発覚した場合、当然単位はあげられません。

ま、これは当然だとは思うけど。


この投稿にコメントする

削除パスワード

No.25287

Re:助けてください
投稿者---RiSK(2006/01/13 22:14:24)


# オフトピに反応 =P

>>掲示板などで教えてもらった解答は教えたスタイルと違うので見ればすぐにわかります。
>
>まともに勉強したら、スタイルは個人ごとに変わってこない?
>特に、学生などだったら、わざわざスタイル変えて、
>自己顕示したくなると思うけど。

本職の方が自分の経験から仰っている事に
つっこみを入れるのはどうだろう。

無論,Hermitさんの考えが正しい可能性もありますが,
(何人もいれば)相反することではないと思うけど。

そもそも,「スタイル」は
コーディングスタイルだけではなくて,
アルゴリズムも含めた広い意味で使っているように読めます。


この投稿にコメントする

削除パスワード

No.25288

Re:助けてください
投稿者---Hermit(2006/01/13 22:35:56)


>本職の方が自分の経験から仰っている事に
>つっこみを入れるのはどうだろう。

基本的に、教師の言う事はまず疑ってかかることにしているので。
(まあ、教師だけに限ったことではないが)


この投稿にコメントする

削除パスワード

No.25292

Re:助けてください
投稿者---RAPT(2006/01/14 01:19:24)


# まぁ、ともかく、こんなんで単位を取って、「プログラム書けます」
# って業界入って来られても、はっきり言って迷惑なので、学校で
# フィルタリングしてもらえるなら・・・と。


この投稿にコメントする

削除パスワード

No.25312

Re:助けてください
投稿者---Ban(2006/01/14 12:21:39)


# 同感。
# 「授業についていけていない」のは、ちゃんと出席して努力し続けた人の台詞であって、
# 課題が出た頃になって、自分で手もつけずに他に泣きつくのは、
# 単に「授業についていかなかった」だけの自業自得だと思います...がんばって。


この投稿にコメントする

削除パスワード

No.25314

Re:助けてください
投稿者---ます(2006/01/14 13:02:24)


>>本職の方が自分の経験から仰っている事に
>>つっこみを入れるのはどうだろう。
>
>基本的に、教師の言う事はまず疑ってかかることにしているので。
>(まあ、教師だけに限ったことではないが)

いくらなんでも無礼でしょう。



この投稿にコメントする

削除パスワード

No.25298

Re:助けてください
投稿者---επιστημη(2006/01/14 08:00:25)


>「入力した整数のビット列(2進数)で出力する」という問題で、シフト演算子とマスクを繰り返して求めるとのことなのですが、授業についていけていないのでまったくわかりません。誰か教えていただけないでしょうか?

#include <iostream>
#include <bitset>

int main() {
 unsigned long value = 123456;
 std::bitset<32> converter(value);
 std::cout << converter.to_string<char,std::char_traits<char>,std::allocator<char> >();
}

/* ※注意 : これは C++です。参考になりません */



この投稿にコメントする

削除パスワード

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧