
No.3ベストアンサー
- 回答日時:
★既に答えが出ているので『例題』の解き方のヒントをアドバイス
●rrotate(右にnビット回転)
(1)符号なし整数『x』を『n』ビット右へシフト移動⇒α
(2)符号なし整数『x』をビット長(32Bit)から『n』を引いた分(32-n)のビットを左へシフト移動⇒β
(3)上記のα、βの値をビット OR で合成⇒θ
(4)合成した『θ』が『右にnビット回転』した値なのでそれを返す。
●lrotate(左にnビット回転)
(1)符号なし整数『x』を『n』ビット左へシフト移動⇒α
(2)符号なし整数『x』をビット長(32Bit)から『n』を引いた分(32-n)のビットを右へシフト移動⇒β
(3)上記のα、βの値をビット OR で合成⇒θ
(4)合成した『θ』が『左にnビット回転』した値なのでそれを返す。
最後に:
・『unsigned』型のビット長に注意して『例題』を解いて下さい。
・現在のパソコン環境では、『unsigned』型のビット長が『32Bit』、『64Bit』の2つのビット長が
存在します。昔は『16Bit』、『32Bit』の2つの時代でしたね。
余談:
・今年登場した『Windows Vista』も『32Bit』タイプ、『64Bit』タイプの2つがあるようですね。
・以上。おわり。
回答ありがとうございます!
解き方のヒントとアドバイスまでつけていただき、おかげで出来ました!
ほんとすごいです。ありがとうございました!
No.6
- 回答日時:
★『CHAR_BIT』について
・1バイトのビット数を定義した記号定数です。
・前回の『関数とビット列』の質問では、『int_bits』と『count_bits』関数が行っていた
ビット長の数が記号定数として定義されているのです。ただし、『CHAR_BIT』は開発環境
が固定化されているため他の環境では正しく動作しない可能性があります。
・つまり、普通は1バイトが 8 ビットですが、なかには 9 ビットというコンピュータが
存在します。すると、この環境では int型のビット長を『sizeof(int) * CHAR_BIT』で計算
してしまうと『4 * 8』で『32』ビットになります。でも、実際は1バイト 9 ビットですので
『36』ビットと異なります。このため、『CHAR_BIT』記号定数よりも『~0U』としてビット数
を数えた方が正しく動作します。
最後に:
・私も『柴田望洋』さんの本を持っていますが『明解C言語 入門編』ではなくて
『新版 秘伝C言語問答 ポインタ編』です。この本はポインタについていろいろと詳しく
書かれているので『ポインタ』をより深く知りたい場合には役に立つかもしれません。
・回答者 No.5 の補足から『柴田望洋』さんのホームページを知っていますね。
・私が持っている本は次の2冊です。
・http://www.bohyoh.com/Books/HidenPtrA/index.html→『秘伝C言語問答 ポインタ編 / 新版 秘伝C言語問答 ポインタ編』
・http://www.bohyoh.com/Books/SuperLib/index.html→『C:98スーパーライブラリ / 新版 C:98スーパーライブラリ』
参考に:
・http://www9.plala.or.jp/sgwr-t/index.html→『初心者のためのポイント学習C言語』
・http://homepage3.nifty.com/mmgames/c_guide/index …→『苦しんで覚えるC言語』
・http://www5c.biglobe.ne.jp/~ecb/c/c00.html→『C言語入門』
その他:
・http://ysserve.int-univ.com/sugsi/Lecture/c2/→『C言語(応用編)』図解され分かりやすい
・http://a-gamyl.hp.infoseek.co.jp/Clang/→『C言語例題』解説がほとんどないが参考になる
より深くC言語を知るには:
・http://seclan.dll.jp/c99d/→『プログラミング言語 C の新機能』
参考URL:http://www9.plala.or.jp/sgwr-t/index.html
いろいろ教えてくださり、本当にありがとうございます。
応用力が全くないため、少しでも違う文脈だけで
わからなくなってしまうので、教えていただいたものを
いかせるか不安ですが、参考にさせて頂こうと思います。
ありがとうございました。
No.5
- 回答日時:
★『関数とビット列』の質問者さんですね。
・質問者さんが今使っている『例題』は、もしかして私が昔買った本の
『Cプログラミング言語 第2版 アンサー・ブック』の演習問題の
方ですかね。
・どうも似たような関数名や例題があります。
・演習問題もよいですが『演習問題の解答集』という本もありますので
お金に余裕があれば買ってみてはどうでしょうか?2,520円です。
・『解答』だけではなく『解説』もされているので、ここで質問をする
以外にも役に立ちますよ。→2点在庫あり。ご注文はお早めに。だって!
参考URL:http://www.amazon.co.jp/gp/product/4320027485
この回答への補足
いつも回答ありがとうございます。
私が使っている本は、柴田望洋著の『明解C言語 入門編』です。
http://www.bohyoh.com/Books/MeikaiC01/index.html
知り合いの人に、C言語を勉強していると言ったら、
柴田望洋著のものがいいと教えてもらったので、
図書館で借りてきました。
確かに、図書館で借りた何冊かのC言語の本の中では、一番
わかりやすく、良い本でしたが、
この本の解説では、私の理解力ではわからないところもあり、
また、演習問題の答えや解説がないところが、少し困っています。
それで、皆さんのお力を借りようと書きこみしてみました。
紹介して頂いた本を買うのがBESTだと思うのですが、
とりあえずは、この本で勉強していこうと思っています。
せっかく紹介して頂いたのに、すみません。
これからもお力を貸していただくかもしれませんが、
よろしくおねがいします。
No.4
- 回答日時:
しかし, どの時点で出てきたんでしょうか, この例題.
清く正しい C プログラマなら「unsigned のビット長に注意するのは無駄」とばかりに sizeof と CHAR_BIT を使うものだと思うんですが, CHAR_BIT が出てくる本ってどのくらいあるんだろ....
この回答への補足
回答ありがとうございます。
c言語勉強中の本を順番にやっていったら、ビット列の問題が
出てきました。
>「unsigned のビット長に注意するのは無駄」とばかりに sizeof と CHAR_BIT を使うものだと
とあるのですが、sizeofはわかるのですが、CHAR_BIT とは何でしょうか?
まだ本当に初歩の初歩しかやっていないので、未だビット回転と格闘中で、ますますわからなくなるかな…と不安ですが、
どういう意味なのでしょうか?
No.2
- 回答日時:
回転とは
10101011
を左に1ビットとして
01010111(一番左の1を、右につける)
にするということですよ。
詳細はいろいろあるのですが、大筋ではそういうことです。
ようはCPUの命令にそういうのがあるので、それを作れってことですね。
参考URLを「シフト」で検索すると似たようなPGMがあります。
http://wisdom.sakura.ne.jp/programming/cs/cs7.html
それからシフトという操作もあります。
前述の例だと
01010110 (一番左の1が消え、右に0をつける)
左に1ビットシフトの例です。
参考URL:http://bbslog.realint.com/?serverid=3&bbsid=poin …
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
コマンドプロンプトについて。
-
C++でデスクトップGUIアプリ開...
-
Windows Formアプリからコンソ...
-
バッチファイルで以下のような...
-
コンソールアプリを作成するの...
-
c言語
-
DLLファイルの逆コンパイラにつ...
-
C言語の関数のextern宣言
-
C言語 関数、変数の宣言について
-
C言語のことです。写真(見にく...
-
私は
-
C#でログファイルにファイルパ...
-
MACで動く実行ファイルをWindow...
-
VisualStudioでC++クラスを追加...
-
大量のデータを読み込んで表示...
-
visual studio 2022でのC#プロ...
-
プログラマー達は何故、プログ...
-
PIC12F1822でLED調光器を作りたい
-
最初に聞かれたこと
-
C言語について(初心者)
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
0xffffとは?
-
8ビットのデータの、先頭ビット...
-
C言語で128bitの2進数のビット...
-
ビットシフトってどんな時使うの?
-
「ひまわり」と「なでしこ」の違い
-
[VBS] 素早くローテート演算したい
-
一般のソフトで画像を扱う場合...
-
文字参照は10進数と16進数では...
-
アセンブラプログラムの「数値...
-
x86のJP命令について。
-
命令について
-
VB.net
-
03分22秒36のような時間の単位...
-
verilog 符号付加減算(最上位...
-
e(自然対数の底)を100桁以上出...
-
代入の書き方で質問です。
-
マイクロコンピューター制御の...
-
光コンピュータについて
-
アセンブリの論理演算命令のCPL...
-
符号無し整数xを右にnビット回転
おすすめ情報