
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で質問しましょう!
似たような質問が見つかりました
- 情報処理技術者・Microsoft認定資格 情報技術の問題についてです。 10進数の−36を以下のような16ビットの浮動小数点表示にするといくつ 3 2022/05/21 19:53
- 情報処理技術者・Microsoft認定資格 2進数の問題を教えてください。 1 2022/07/27 09:42
- 数学 以下の問題が分かりません。 8ビット浮動小数点数が、最上位ビットから順に符号1ビット、指数部3ビット 4 2023/07/22 16:06
- C言語・C++・C# 至急教えてください。プログラミングの問題です。 最初に正の整数nの入力を受け付け、次に分数の分子と分 1 2022/07/19 17:03
- C言語・C++・C# 至急教えてください。プログラミングの問題です。 malloc関数を使ってください!お願いします! 最 1 2022/07/21 09:28
- C言語・C++・C# C言語 3 2022/10/04 15:07
- その他(プログラミング・Web制作) プログラミング pythonの問題について 2 2022/04/19 00:41
- C言語・C++・C# 至急お願いします。プログラミングの問題です。 最初に正の整数nの入力を受け付け、次に分数の分子と分母 3 2022/07/19 17:09
- C言語・C++・C# C言語の課題が出たのですが自力でやっても分かりませんでした。 要素数がnであるint型の配列v2の並 3 2022/11/19 17:41
- C言語・C++・C# C言語 共用体について コマンドライン引数で値を2つ入力したときに、argv[2]の値をUNI u1 4 2022/04/25 20:34
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
8ビットのデータの、先頭ビット...
-
0xffffとは?
-
C言語で128bitの2進数のビット...
-
シーケンス制御について質問で...
-
Endianについて パート2
-
「ひまわり」と「なでしこ」の違い
-
符号無し整数xを右にnビット回転
-
C言語のビット演算子について
-
シーケンス制御についての質問...
-
[VBS] 素早くローテート演算したい
-
オーバーフローについて教えて...
-
命令について
-
ビットの取り出し方法
-
ビットシフトってどんな時使うの?
-
三菱シーケンサーの命令でFROM ...
-
PS3に搭載されている"Cell"は、...
-
マイクロコンピューター制御の...
-
一般のソフトで画像を扱う場合...
-
A4 持ち込み
-
ライン数とステップ数の違いは?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
0xffffとは?
-
8ビットのデータの、先頭ビット...
-
ビットシフトってどんな時使うの?
-
C言語で128bitの2進数のビット...
-
シーケンス制御についての質問...
-
PS3に搭載されている"Cell"は、...
-
文字参照は10進数と16進数では...
-
一般のソフトで画像を扱う場合...
-
情報科学の飽和演算、ラップア...
-
エクセルVBAのIf,Then 構...
-
符号無し整数xを右にnビット回転
-
C言語やC++言語でビット毎に値...
-
アクセス(2003)のVBAでビット...
-
verilog 符号付加減算(最上位...
-
浮動小数点数の内部表現につい...
-
命令について
-
visualbasic のコード中で 100...
-
スロースキャンコンピュータ 加...
-
16ビットCPUで32ビットの計算方法
-
整数除算の意味とは?
おすすめ情報