• 締切済み

サイクリックシフトとは?

C言語の課題で文字列を左に2個サイクリックシフトせよ。 という問題が出ました。 例えば TOKYO という文字列をサイクリックシフトするとは KYOTO となるということでいいのでしょうか? ご回答お願いします。

みんなの回答

  • mink6137
  • ベストアンサー率23% (595/2498)
回答No.2

概ねOKですね。 正確にはシフト方向(左or右)の指示が必要です。 TOKYO→KYOTO … 左シフト TOKYO→YOTOK … 左シフト コンピューターにはビット単位のシフト命令を実行するシフター(ハード)が必ずあり、 アセンブラ言語に左シフト、右シフト、左と右のローテイトシフト命令他があります。 ご質問のシフト対象はキャラクタ(英数字)単位の左ローテイトシフトなので1文字あたりに、 1バイト(8ビット)の左ローテイトシフト命令を実行しています。

win_giants
質問者

お礼

遅くなりまして申し訳ありません。 ありがとうございます!

回答No.1

それで良いと思います。「巡回シフト」と呼ばれることも多いですね。

参考URL:
http://www.picfun.com/arch09.html

関連するQ&A

  • シフトJISからUTF-8に変換

    UNIX系OSのC言語で文字列をシフトJISからUTF-8に変換する方法をご存知の方がいらっしゃいましたらご教授下さい。 なにとぞ宜しくお願いいたします。

  • C言語超超初心者です。学校の課題で悩んでます

    C言語超超初心者です。学校の課題で次のような文字列問題に悩んでいます。 C言語初心者です。学校の課題で次のような文字列問題に悩んでいます。 文字列2つを入力させ(str1, str2)、str1の内番目(入力させる)にstr2を挿入する。結果はstr1に入れる。 (結果例) str1 : 123456 str2 : aa 挿入箇所 : 3 結果 : 12aa3456 --------------------------------------------------------------------------------------------------------------- この問題がどのような流れて処理をするかも全くわかりません。 超初心者なので分かりやすくご回答いただければありがたいです

  • シフト演算について

    基本情報技術者試験の資格試験のための勉強をしているものです。 現在、カテゴリー的には基礎理論の離散数学、 シフト演算のうち、「論理シフト」ではなく、 「算術シフト」で理解できない点があります。 左シフトは理解できたつもりなんですが・・・ 右シフトがいまいちよくわかりません。 以下に例題を表記します。 【10001100を2ビット左シフト】 先頭ビットは符号ビットということで、マイナスの数値になるのだと思います。すると、 【元の数】 10001100 =-(0001100) =-(8+4) =-12 【2桁左シフト結果=元の数×2^2】 10110000 =-(0110000) =-(32+16) =-48 となり、 元の数=-12 結果 =-48 で、結果が元の数×2^2で結果が合っているようです。 (と思っているだけなんですが) 元の数の考え方自体に間違いがありそうですが・・・ とりあえず進みます。 同様に 【10001100を2ビット右シフト】すると 【2桁右シフト結果=元の数×2^-2(=元の数×1/4)】 11100011 =-(1100011) =-(64+32+8+4) =-99 となり、 元の数=-12 結果 =-99 で、結果が元の数×2^-2(=元の数×1/4)と結果が合いません。 先頭符号を空いたビットに移動した部分は数えないのでしょうか。 すると、 元の値 =-12 結果  =-3 で結果が合う気がします。 過去の回答や検索サイトなどで調べてみましたがピンときません。 テキストにも、10進数での数値表記はなく、 答え合わせができなくて困っております。 どなたかお答えいただけると助かります。 どこが間違っているのか混乱しております。 先頭ビットが正負の符号ビットという前提の例題なのですが、 マイナス符号がついている前提となるので 先頭ビットや空いたビットに入れた符号ビットも含めて 「2の補数」で考える必要があるのかどうかも よくわからなくなってきました。 つまり、元の数値「10001100」は「-12」ではなく -(01110100) =-(64+32+16+4) =-116 なのでしょうか なお、C言語は今のところ学習していないので、 C言語にまつわるご回答ですともっとわからなくなりそうです。 単純に間違いを指摘していただけると大変助かります。 よろしくお願いします。

  • プログラミング(C言語)について

    プログラミングの課題です。いろいろ考えたのですがうまくいきません。 文字検索プログラムをC言語で作ろうとしています。多くの文字列(例:ABAABCBBABC・・・)の中から検索したい文字列(例えばABC)を入力して、その文字列が何か所に含まれてそれぞれ何文字目に始まるかを求めるようにするというものです。 どなたかわかる方がいらっしゃいましたらご回答よろしくお願いいたします。できれば詳しく式などを書いていただきたいです。

  • fgetsで拾われる改行文字を削除したい

    お世話になります  C言語初心者のものです。今課題でC言語を用いたプログラミングを Fedora上でやっています。問題は、fgetsでテキストファイルから、取得 した文字列の中から改行文字を削除できないことです。文字変数のアド レスはわかっているのですが、終端文字に置換しようとすると、セグメ ントエラーになってしまいます。これは如何にして解決すべきでしょう か。よろしくお願いします。

  • Excelで、 シフトを作っているのですが、そのシフトを見て、お客様に

    Excelで、 シフトを作っているのですが、そのシフトを見て、お客様にわたす。カレンダーも つくります。 例)シフトは、横にお客様の名前の列。左縦に日付。その日にお客様に入る、担当名を入れています。 そのシフトを見て、 お客様には 毎月、Excelでカレンダーのような用紙に、担当名を入れます。 私は二重手間になるので、シフトを作ったら 自動的に、お客様のカレンダーにも 担当名が、入るように出来ないでしょうか? よろしくお願いいたします。

  • C言語

    課題なんですが、C言語で 「文字列と正数nをキーボードから入力して、1行n文字で改行するプログラム」 をつくりたいのですが、わかりません。どうすればよいのですか?

  • シフトJISのソート

    C言語の勉強をしております。 環境は、WindowsXP、VC++です。 シフトJISの文字を、英語(A~Z)、数字(0~9)、ひらがな(あ~ん)でソートしたいのですg、どうすれば良いのか分かりません・・・。 ネット等で色々見てみたのですが、どなたか分かりやすくご説明していただけないでしょうか? 使用する文字も上記だけなので、それ以外が入力された場合にチェックする機能も欲しいと思っております。 以上、よろしくお願いいたします。

  • Excelの行、列の左方向シフト、上方向シフト削除ができません。

    Excelの行、列の行全体、列全体の削除はできるのですが、左方向にシフト、上方向にシフトの削除が選択できずグレーになったままです。行、列の挿入も行全体、列全体は選択できるのですが、右方向にシフト、下方向にシフトの挿入ができません。 自分が作成したファイルではないので、どのように設定されているのかわかりません。わかるかた教えてください。

  • 論理シフトについて

    コンピュータの論理シフトについて質問があります。 シフトしてオーバーフローした場合は、コンピュータ内部においては演算結果が反映されているのでしょうか? 例えば、8ビット表記で (10100001)_2 =(161)_10 で左に一桁シフトしたとすると (01000010)_2 =(66)_10 という表記になると思うのですが、このようなシフトをすると値が小さくなってしまう という考え方をすればいいのでしょうか? 回答よろしくおねがいします。