- ベストアンサー
バイナリとBCDコード
2進法と2進化10進法の違いを簡略でいいので 教えてください! 懐かしき「2000年問題」の本を読んでいたら BCDコードの場合 コンピュータの数値認識 → 99に1が足されて 00(で一桁くりあがる) → 問題発生 バイナリ値の場合 → 1999から2000年の変化はただ1増えるに過ぎない と書いてありました。 できれば上記を踏まえて説明してくれると助かります! わかりにくい質問かもしれませんがよろしくです。
- みんなの回答 (4)
- 専門家の回答
関連するQ&A
- 10進数をBCDに変換する方法
10進数から2進化10進数(BCD)に変換するところで疑問があります。 たとえば、10進数の3846をBCDに変換する場合答えはどのようになりますか? 私なりに考えたところまでを示しますが、答えがわかりません。 どこに考え方の間違いがあるのでしょうか? まず、3846を2進数に変換しました。 3846 → 0000111100000110 (2進数)となります。 ここからBCDに変換する場合、4ビットずつを1つと考えて数字を表現するので、上記の2進数の頭から4つずつ分けて考えると 1つ目 0000 2つ目 1111 3つ目 0000 4つ目 0110 の4つにわけました。 続いて、それぞれを10進化しました。 1つ目 0000 → 0 2つ目 1111 → 15 3つ目 0000 → 0 4つ目 0110 → 6 ここで疑問が出てきます。 2つ目のところで、1111を10進化すると15となってしまい桁上りが生じます。 この場合どのように処理するのが良いのでしょうか? どなたかご教授ください。
- 締切済み
- SE・インフラ・Webエンジニア
- 10進数をBCDに変換する方法
10進数から2進化10進数(BCD)に変換するところで疑問があります。 たとえば、10進数の3846をBCDに変換する場合答えはどのようになりますか? 私なりに考えたところまでを示しますが、答えがわかりません。 どこに考え方の間違いがあるのでしょうか? まず、3846を2進数に変換しました。 3846 → 0000111100000110 (2進数)となります。 ここからBCDに変換する場合、4ビットずつを1つと考えて数字を表現するので、上記の2進数の頭から4つずつ分けて考えると 1つ目 0000 2つ目 1111 3つ目 0000 4つ目 0110 の4つにわけました。 続いて、それぞれを10進化しました。 1つ目 0000 → 0 2つ目 1111 → 15 3つ目 0000 → 0 4つ目 0110 → 6 ここで疑問が出てきます。 2つ目のところで、1111を10進化すると15となってしまい桁上りが生じます。 この場合どのように処理するのが良いのでしょうか? どなたかご教授ください。
- ベストアンサー
- その他(プログラミング・開発)
- シーケンサー入力で装置でよくBCDコード1248と言いますが。
シーケンサー入力で装置でよくBCDコード1248と言いますが。 シーケンサーやカウンターの入力でよく1248(いち に よん ぱ)と言いますが、これはBCDコードを言っていると思います。 BCDコードでは2進法の0を0000で表記する為、最大16通りの組み合わせができると考えればよいのでしょうか? また何故制御機器で入力を言う場合1248と呼ぶのでしょうか? よろしく解説お願いします。
- 締切済み
- 科学
- 2進数からBCDコードへの変換
今,2進カウンタを作り,これから7セグメントLEDへ出力する回路を作りたいのですが,1桁の場合は,デコーダICでそのまま変換可能なのですが,10進数に直したときに2桁以上になるものは,デコーダの前で各桁ごとのBCDコードに分けてあげないといけなくなります。ここが分からないのです。 回路の構成としては,カウンタ部分をアナログで構成し,そこで8個のスイッチをつけて,それぞれ2進数の各桁の入力としています。これと,3個のデコーダICと7セグメントLEDで2^8=255までを表示させたいのですが,どのような回路構成だとシンプルに作れるのでしょうか。また,そのようなICは存在するのでしょうか。
- 締切済み
- その他(学問・教育)
- UNIXのバイナリファイル→WINDOWSのバイナリファイル(互換性ありますか?)
UNIXで計算させた数値をバイナリ形式のファイルで保存しています。このファイルをWINDOWS上のメモ帳で開くとUNIX上のものと異なった数値が表示されました。数値の個数は合っているのですが,何か問題はあるでしょうか。互換性がない場合の対処法もご教授願えれば助かります。説明補足が必要な場合はどんどん要求してください。よろしくお願いします。
- ベストアンサー
- その他(ソフトウェア)
- BCD出力で表示されたものをBINに変換すると
PLC制御を学び始めた初心者です。 BCD出力とBIN出力について勉強している中で、たとえばヒーターの温度設定を行うことを想定して、BCD出力をするタッチパネルを用いて行った温度設定を場合について疑問があります。 たとえば、表示パネル上で63℃と設定したとします。 BCDなので、各桁それぞれを2進数で表して 6→0110 3→0011 つまり 63 = 0110 0011 ということになりますよね。 さらに、データをCPUやPLCに取り込むときにBINデータに変換する必要があると思うのですが、これをBINデータに変換する場合、上記のBCDデータを通常の2進数と見て、一度10進数に戻し、それを再度2進数に戻す作業になると思います。 具体的には、 01100011 =1+2^1+2^5+2^6=102 したがって、10進数の102という数値になりますよね? これを再度2進数化したものがBIN変換した数値ということになると思いますので、 102 = 01100110 (2進数) という風になるかと思います。 つまりPLCの内部ではこの2進数をデータとして取り扱うことになるかと思いますが、 さて、ここでよくわからないのですが、 タッチパネル上では63℃として入力していたのに、内部に入ったら102(℃?単位はわかりませんが・・・)として扱われています。 ここがよくわかりません。63℃のはずが102に変換されてしまっています。 だったら最初から変換などせずにそのままでいいのではないかとも思うのですが?? どなたがご教授いただけませんでしょうか。 なぜBINとBCDが扱われるのかについても教えていただけると幸いです。
- 締切済み
- その他([技術者向] コンピューター)
- 言語コードの2文字または、3文字または、3桁の数値コードの記述について
普通言語コードを記述するとき、アメリカの英語だとしたら「en-us」となりますが、アルファベット3文字や3桁の数値のコードも使用できるのでしょうか? 例えば、アメリカの場合2文字は「us」、3文字は「usa」、3桁数値は「840」なので、言語コードをアメリカの英語とする場合、「en-usa」や「en-840」と記述してよいのでしょうか? 回答よろしくお願いします。
- ベストアンサー
- HTML
- バイナリーBCD変換アプリAN526ついて
PICの入門者です。温度計を作るべくプログラムを勉強しているのですが、温度表示をする際、バイナリ-からBCDに変換するには、書物によるとMicro chip社のアプリケーションンノートAN526をコピー使用すると良いことが記述されており、実際コピーしてい使用すると問題ないのですが、プログラムのアルゴリズムは何とか理解できましたが、プログラムの詳細が解りません。どなたかアドバイス頂ければ有り難いです。 (理解できない部分) 1、定数 L_byte、H_byte、R2、R1、R0をrlfを実行して decfsz count,Fでcountが16以内であれば adj DECにジャンプする訳ですが、そこでmovlw R2(R1,R0)→ movwf FSR となっていますがこの間接アドレッシングの方法が? 2、さらにSUBルーチン adjBCD でmovlw 3 → addwf 0,w とありますがここでaddwf 0,wの0はINDFを指している理解しましたが正しいでしょうか? *R2(R1,R0)の値が指定するメモリー番地の値となると変数R2(R1,R0)の値は8bitの範囲で変化するのでSFRの番地に被ってしまわないか?ということです。 私の考え方間違っていると思いますがご指摘ください。 アプリケーションAN526抜粋 B2_BCD bcf STATUS,0 movlw .16 movwf count clrf R0 clrf R1 clrf R2 RHloop16 rlf L_byte,F rlf H_byte,F rlf R2,F rlf R1,F rlf R0,F decfsz count,F goto adjBCD retlw 0 adjDEC movlw R2 ←変数R2の値は8bitの範囲で変わると思われるがSFRに被ることはない movwf FSR ← call adjBCD movlw R1 movwf FSR call adjBCD movlw R0 movwf FSR call adjBCD goto RHloop16 adjBCD movlw 3 addwf 0,w ← 0はINDFの意味?つまり定数R2,1,0の指定する番地の値に+3する? 以下省略
- 締切済み
- その他(プログラミング・開発)
- バイナリファイルとソースコードのバージョン一致確認
わかりにくいタイトルですみません。 とあるアプリケーション(Win3.11 EXE)が存在し、そのソースコードも存在します。 しかし、15年以上の時間経過で当時の担当者達は全員退職し、また会社の吸収合併や組織変更などの影響で、そのソースコードが現在動いているアプリケーションと同じバージョンかどうか、つまり今あるソースコードで現在のアプリケーションのバイナリファイルを作成できるのかどうかがわからなくなりました。 そのソースコードが現在動いているアプリケーションと同じバージョンかどうかを確認するには、どのような方法が考えられるでしょうか? 例えば、ソースコードをコンパイルしてファイルサイズが同じならかなりの確立でバージョンが一致していると想定していいのではないかと考えていますが、Windows(3.11)やコンパイラ(VC++1.52)が同じなら、同じソースを同じオプションでコンパイルしたら同じバイナリファイルが生成されるでしょうか? また、上記の方法がNGな場合、他にどのような確認方法が考えられますでしょうか? 今までこのような問題に遭遇したことがないため、いろいろなアイディアがほしいです。お知恵をお貸しください。
- ベストアンサー
- C・C++・C#
お礼
お礼がおくれましたが、どうもありがとうございました。 2進数は少数に弱いんですね。 そして 「9月8日」問題、さっそく調べさせていただきます!