• 締切済み

グレイコードの変換

グレイコードを以下のように、バイナリーコードに変換する処理をVisual C++で作ろうとしています。 Gray code  Binary code 0        0 1        1 2        3 255       170 (テキストボックス1に打ち込んだGray codeを変換してテキストボックス2に表示するようにしたい) Gray codeを2進数表記に変換してからBinary codeに変換するのだと思いますが、Gray codeを2進数表記に変換する処理をどのように書いたらいいのかが、ちゃんとわかってはいないので、ぜひ回答をお願いします。

  • kitct
  • お礼率13% (7/53)

みんなの回答

回答No.5

bitset使えばほとんどコード書かずに済むっしょ。 #include<iostream> #include <bitset> using namespace std; int main() { for ( int n = 0; n < 256; ++n ) { bitset<8> bin(n); cout << bin.to_string() << endl; } }

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.4

#3 の変形だけどこっちのほうがきれいか: #include <limits.h> /* .... */ for (int shift = 1; shift < sizeof x * CHAR_BIT; shift <<= 1) x ^= x>>shift; もちろん x は unsigned な整数限定で.

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.3

32ビットなら for (int i = 0; i < 5; ++i) /* n.b. 1<<5 >= 32 */ x ^= x>>(1<<i);

回答No.2

2進数表記の方法が知りたいということですかね とりあえず、↓itob()を呼び出せば2進数表記に変換した文字列がとれます。 void itob( int num, char* buffer, int bufferSize ) { if( 1 <= bufferSize ) { int ii = bufferSize - 1; buffer[ ii-- ] = '\0'; while( ii >= 0 ) { if( num & 1 ) buffer[ ii-- ] = '1'; else buffer[ ii-- ] = '0'; num >>= 1; } } } int main() { int n = 99999; // char buffer[ sizeof( int ) * 8 + 1 ]; itob( n, buffer, sizeof( buffer ) ); return 0; }

  • TT414
  • ベストアンサー率18% (72/384)
回答No.1

http://gurizuri0505.halfmoon.jp/develop/csharp/graycode を参照してください、但しコメントに間違いがあります。 >28. //バイナリをグレイコードへ変換 は 28. //グレイコードをバイナリへ変換 です

関連するQ&A

  • visual c++の文字コード判別

    現在、visual studio2010のvisual C++でメモ帳をテキストボックスに表示するプログラムを作成しています。 しかし、文字コードがASCIIで保存してあるファイルを開こうとすると、文字化けが起こります。 shift-jisなどに変換しようとすると、ほかの文字コードで保存してあるファイルを開いたときに文字化けが起こります。 文字コードがASCIIのテキストファイルを開くときのみ、shift-jisなどに変換しようと思うのですが、文字コードがASCIIであるか、そうでないかを判別できる処理があれば教えていただけないでしょうか?

  • グレイコードの整数への変換方法 御存知ないですか?

    グレイコードを整数へ変換したいと思っているのですが、 変換方法がわかりません。どなたか御存知ないでしょうか? 例えば 2進法の数字 01101を 整数に変換するには、 0×2^(4)+1×2^(3)+1×2^(2)+0×2^(1)+1*2^(0)とすれば 整数 13を得ることができます。 グレイコードで表記された 01101を整数に変換するには どのような計算をすれば よいのかが知りたいことです。 できれば、01101に限らず 2進法の10進法への変換のように一般的な 方法があればと思っています。 御存知なら お助け下さい。

  • C#でバイナリデータをテキストフォームへ表示させるには?

    C#でバイナリデータをテキストフォームへ表示させるには? C#でバイナリファイルをテキストへ変換するツールを作成しています。 バイナリデータを配列へ格納し、その配列をテキスト変換してテキストフォームへ出力させるという処理を作成したいのですが、どうすれば良いのかどうしてもわかりません。 どのようなコードをどのようにして書けばよいのか、ご教示いただけないでしょうか。 よろしくお願いします。 (ちなみにC#を始めて1週間ほどです)

  • コード変換について

    はじめまして VB初心者です。 以下のような処理を行いたいのですがご教授願います。 項目A(漢字10文字)があります。 項目Aの中には外字で作成した漢字が埋もれています。 項目Aを参照し、そこにある外字コードを判断し 別の外字コードに変換したい。 ロジック的には1文字(2バイト)を読み込み 外字をバイナリ判定して別のコードに置き換えする 処理をしたい。 当方vb6.0ですが 定義の方法、ロジックなど教えていただければ幸いです。

  • JAVAでSJISのコード変換

    JAVAで、UnicodeからSJISへのコード変換を行った上で ファイル出力を行いたいです。 たとえば文字列中にある「(1)」の文字コードが以下である時 ------------------------------- SJIS:8744 - UNICODE:2464 ------------------------------- 2464のコードを8744に変換した上でファイル出力したいです。 処理として、以下の様な形を考えているのですが 文字化けしてしまします。 ------------------------------- String source = "(1)あああああ"; 文字列の数分ループ処理↓ int code = (int) (source[x].charAt(i)); if (code == 2464) { strBuff.append(String.valueOf((char) (8744))); } ------------------------------- Unicodeで扱われているので「getByte("SJIS")」などとしているのですが 同様の結果となります。 何か良い手はないものでしょうか?

    • ベストアンサー
    • Java
  • 漢字コード変換ツールについて

    jis⇔sjis⇔euc等の変換するツールは、よくあるのですが、ユーザーの漢字変換テーブル(FROM CODE:TO CODE)通りに変換してくれるツールをご存知ないでしょうか。複数ファイルのテキストを定例的に変換するため、VBでなくBATファイルで動作させられる物を探しています。 利用目的は以下の通りです。 ・汎用機(メーカ独自漢字コード)⇔sjis漢字コードへの変換 以上、よろしくお願いします。

  • PhotoShop Elements2でグレー変換

    はじめまして、まさしといいます。 PhotoShop Elements2で分からないところがありますのでどなたかご教授下さいm(_._)m 同一画像を以下の2通りの処理でそれぞれグレー変換したところ、 グレーの濃度が異なっていました。  処理1.イメージ->モード->グレースケール  処理2.画質調整->カラー->カラーを削除 なぜ結果にグレーの濃度差ができるのでしょうか? 各処理のアルゴリズムを簡単に教えてください。 宜しくお願い致します。

  • PLDでのコード変換・比較回路

    お世話になります。 グレイコード(9bit)で入力された値をバイナリーコード→BCDコードと変換し、この値と別途設定したBCDコードとの大小を比較し、その結果を出力するロジックを組みたいのですが、PLDを使えば簡単に出来ますでしょうか? どういったデバイスなら可能でしょうか? 汎用的なところでお教えいただけると助かります。 宜しくお願いします。 以上

  • Visual Basicでファイル内の文字コード変換をしたいのです。

    こんばんは。どなたかアドバイスをお願いいたします。 実は、次の内容のプログラムをVisual Basic5.0を使って作成しようとしています。 (1)EBCDIC→JISへのコード変換(汎用機用のデータをパソコンで使用するため) (2)上記データ内に含まれるパック数字をアンパック数字に変換 (3)対象のデータをCSVファイルに書き込む ※使用する汎用機、パソコンは両方ともNEC製です。 データ数が多いことと、桁数の異なるレコードが結合されて1つのファイルとなっているため、コンバートソフトは使用できませんでした。 実は、上記(1)~(3)を行うプログラムがあるのですが、作成者が知らないうちに変更してしまったらしく、動かなくなっていました。作成者は現在すでに退職しており連絡も取れません。そのプログラムはVisual C++で作成されているため現在の私の力では解析して変更点を直すができませんでした。急を要するためVisual C++を勉強して解析するか、Visual Basicで作り直すかの選択を迫られている状態です。プログラム言語により処理が可能なものと不可能なものがあると聞いたことがあるのですが、Visual Basicで作成できればそちらに切り替えたいと考えています。長文になり申し訳ありません。何卒よろしくお願いします。

  • 改行コードの変換方法

    Excelシート内にあるテキストボックスの改行コード(LF)が多数存在してます。 これを改行コード(CRLF)に簡単に変換する方法はありますか? 対象文字を選択してExcelの置換機能で変換できませんか?