- ベストアンサー
CHAR_BITについて
”CHAR_BITは開発環境に依存する為、他の環境では正しく動作しない可能性があります。つまり、普通は1バイトが 8 ビットですが、なかには 9 ビットというコンピュータが存在します”と言う事を、C言語の本で読んだのですが、何ゆえCHAR_BITが開発環境によりビット数が違うのか解りません。CPU等ハードの問題なのか、文字コード等ソフトの問題なのか解りません。どなたか、具体的にご教授できたら幸いです。宜しく願います。
- みんなの回答 (5)
- 専門家の回答
関連するQ&A
- 32bitから64bitマシンへのシステム移行
質問させて頂きます。 ご教示お願いいたします。 32bitサーバで動作しているWebシステムを64bitOSのサーバへ移行することになりました。 そこで、32bitマシンから64bitマシンへのシステム移行をする際に気をつけるべき点をご教授ください。 そもそも可能なのでしょうか。 また、32bit開発マシンでコンパイルし、64bitサーバへ乗せようと考えていますが、 開発マシンとサーバのbit数が違う場合は動作しないこともあり得るのでしょうか。 一応、メーカーへ問い合わせたところ「全く動かないわけではなく、基本的には動く。 但し、動作に保障はできないので、テストを入念に行ってください。」とのことでした。 コンパイルの問題もですが、他のアプリのバージョンも変わってくると思いますが、 以下の問題以外に他にありますでしょうか。 ・.NetFrameworkのバージョン変更(もしかしたら必要ない?) ・MySqlのバージョン変更が生じる(データ移行の際にdumpファイルをロードするだけではダメ?) ver.5.1.44から5.1.58にしようと思っています。 64bit環境での開発は初めてですので、知識が浅いものですからご教授頂けると幸いです。 宜しくお願いいたします。 以下、マシン構成 【現在】 ・開発マシン OS: WindowsXP Professional2002 SP3 32bit tool: Microsoft Visual Web Developer 2008 Express Edition .Net: .NET Framework 3.5 ・サーバ OS: WindowsServer 2003 R2 StandardEdition SP2 32bit DB: mysql 5.1.44 win32 .Net: .NET Framework 3.5 【新】 ・新サーバ OS: WindowsServer2008 x64 StandardEdition
- ベストアンサー
- その他(プログラミング・開発)
- VS2012 C# バイナリが32bitで動作固定
文字数制限のため、わかりづらいタイトルになってしまいました。 Windows 7 64bit版のOSにてVisual Studio 2012 for Windows Desktopを 使っています。言語はC#です。 デフォルトでコンパイルしたバイナリが64bit環境にもかかわらず32bitで 動作してしまうので、理由を知りたいです。 手順 1.コンソールやフォームのプロジェクトを新規作成して、ソリューション構成を 「Release」にします。ソリューションプラットホームは「Any CPU」であることを 確認します。 2.コンソールの場合、すぐ終わらないようにMain関数に「Console.ReadKey();」等を 記述します。 3.「すべてを保存」して、「ソリューションのビルド」をします。 4.コンパイルしたバイナリを直接実行すると、「32bitで動作」してしまいます。 5.プロジェクトの「対象のフレームワーク」を「.NET Framework 4」にします。 6.ビルドして実行すると、「64bitで動作」しています。 7.プロジェクトの「対象のフレームワーク」を「.NET Framework 4.5」に戻します。 6.ビルドして実行すると、「64bitで動作」しています。 手順中の 6. と 8. にて「64bitで動作」することは理解できるのですが、4. にて 「32bitで動作」する理由がわかりません。こちらの原因をお教えいただけると 助かります。
- ベストアンサー
- C・C++・C#
- SPARCのCPUは32bitなのか64bitなのか?
isainfo -vの結果はOSがサポートしているbitですが、CPUのハードアーキテクチャではないですね。 SPARC(2)450MHzのCPUを使ってきましたが、それは64bitのCPUでしょうか? ありがとうございます。
- ベストアンサー
- Solaris系OS
- 8個のビットを1バイトとして扱う方法
1バイトをビット扱いする方法は、 union un_p1dr { unsigned char one_byte ; struct { unsigned char b7:1 ; unsigned char b6:1 ; unsigned char b5:1 ; unsigned char b4:1 ; unsigned char b3:1 ; unsigned char b2:1 ; unsigned char b1:1 ; unsigned char b0:1 ; } bit ; } ; #define pt_da_p1dr (*(volatile union un_p1dr *)0xffffd0) と宣言すれば、pt_da_p1dr.bit.b7 = 1 ;の様にビット扱いが出来ます。 この反対を行える宣言方法は、あるでしょうか? つまり、任意の1ビットを8ビット集め、プログラムでバイトにてアクセスしたいのですが・・・・ ARMなどは、ビットの扱いが容易に可能です。しかし、CPUの周辺関係事情より、バイトでのアクセスが 可能なように、ハード割り当てが出来ません。 従って、現在は、プログラムにて、ビットを集め、バイトにして、アクセスしています。 なにか良い宣言方法があれば、ご伝授していただけないでしょうか? 宜しくお願いいたします。
- 締切済み
- C・C++・C#
- 64bitのWindows7での16bitの動作
64bitのWindows7の入札を考えています。 そこで2つほどお聞きしたいことがあります。 質問1 主に使っているアプリが32bitなのですが、 64bitでは問題なく動作するのでしょうか。 話ではほとんど問題ないとのことでした。 VB6で作成したアプリが動けば問題ありません。 質問2 16bit時代から愛用しているゲームがあるのですが 16bitとのプログラムは動作しますか。
- ベストアンサー
- Windows 7
- char→10進数
PICのプラグラムをC言語で書いています。 unsigned charでxを宣言して、xには電圧をAD変換した値(8bit)が代入されます。このxの値を10進数に変換したいのですが、char型をどうすればint型に変換すればいいのか分かりません。 自分なりに作ってみましたが、うまく動作しません。ご教授よろしくお願いします。 /*抜粋*/ unsigned char x; int y,i; float n; ・・・ y=0; for(i=7;i>=0;i--){ n=(((x>>i)<<7)>>7); if(n==1)n=pow(2,i); y=y+(int)n; }
- ベストアンサー
- C・C++・C#
- Windows7の64bit版でプログラム開発環境を整えるには
Windows7の64bit版でプログラム開発環境を整えるには Phoenix001と申します。 早速質問に入らせて頂きます。 プログラミング初心者で、Windows7の64bit版でC言語、Java、Objective-Cなどの開発環境を整えたいのですが何かオススメのソフトはありますでしょうか? 正直、「MinGW」などプログラミングの定番ソフトはbeta版だったりなど、Windows7の64bitにはあまり対応していないものが多く困惑しています。 ソフトはなるべくフリーソフトだと助かります。 漠然とした質問で失礼なのですが、回答宜しくお願い致します。 ********************************************************* OS:Windows7 Home Premium 64bit
- ベストアンサー
- その他(プログラミング・開発)
- 32bitから64bitのOracleDB移行
32bit版で構築されているOracleDBを64bit版のOracleDBに移行しようとしているのですが、 下記の問題が生じています。 1)下記のストアド、曜日を取得する変数について、 SELECT TO_CHAR(TO_DATE('2012/02/01'),'Day') INTO v_YOUBI FROM DUAL; 32bit版では、6バイトの定義(v_YOUBI VARCHAR(6))でよかったのですが、 64bit版で、6バイトにすると、オーバーフローになってしまいます。 9バイトにしたところ、正常動作しました。 64bit版で、オーバーフローする理由をお教えください。 ※32bit版、64bit版は共にSHIFT-JISにしております。 2)Date型のテーブル項目にChar型の日付を挿入しようとするとエラーになります(32bit版では許容)。 64bit版では制限が厳しくなったのでしょうか? 32bit版、64bit版の違いをお教えください。 3)ほかに、32bit版から64bit版に移行することによる注意点をお教えください。
- 締切済み
- Oracle
- どなたかパソコンに詳しい方、助けてください。
どなたかパソコンに詳しい方、助けてください。 いま学校の課題が解けずに困っています。 教科書を見てもよくわかりません。 どなたか次の問題の答えを教えてください。 コンピューターで扱うことのできる文字全体を文字コードと呼び、一般的によく使われるものに(1)コードがある。しかし、(1)では、漢字やひらがなが使えないので(2)コードを用いる。 多くのコンピューターは、アメリカで開発された(3)コードを基本としているが、それ以外に、日本語を表現するのに適した(4)コード、アメリカで開発された2バイトコードであるECU、一文字表現に32ビットを用いる(5)などがある。 選択肢 ア・シフトJIS イ・JIS8ビット ウ・JIS16ビット エ・ユニコード オ・CPU カ・ASCII
- 締切済み
- その他([技術者向] コンピューター)
- 32bitで作ったアプリケーションの64bit環境へのコンパイル
32bitで作ったアプリケーションの64bit環境へのコンパイル 現在、32ビット環境で作ってWindowsXPで正常に動作しているアプリケーションを、 Windows7などの64ビット環境でWOW64を介せずに起動できるように、x64用に コンパイルしようと考えています。 今まではVC++2008EEとWindowsSDK,DirectX9を使って組んでいましたが、 ExpressEditionだとx64向けのコンパイルができないと言うことで、2010EEと WindowsSDK7.1をインストールし、その後構成マネージャで設定をx64にして XP32bit上でコンパイルしました。ソースコードは全く手を加えない状態だったので、 何かエラー・警告があるかと思いましたが、警告も出ずコンパイルは通り、 64ビット環境で起動することも出来ました。 しかし、起動した直後に処理が非常に重くなり、FPSも10~20程度ではないかと 言うほどに動作がもっさりとしてしまいます。 起動しないわけではないし、動き自体も低速ながら、期待されたもしくは XP32bitで起動したときと同じように動いているように見受けられます。 よく見るポインタの長さに関しての問題等も、そもそもあった場合エラーが出て 落ちてしまうのではないかと思います。現状ソースを修正するにしても、 エラーも何も出ていないためどこにどう手を加えたらいいのか分かりません。 なにか原因となるものに心当たりがあればご教授いただけると幸いです。 使用ソフトは上記のようにVC++2008と2010、WinSDK,DirectXともにSDKは (おそらく)最新版でリンクするライブラリのパスにはx64のフォルダを指定、 プリプロセッサの設定で_WIN64を定義しています。 コンパイラも、起動出来てはいるので64ビットのコードを吐くものに 設定されていると思います。
- ベストアンサー
- C・C++・C#
補足
”もしchar型を8ビットにするのであれば、各ワードの上位なのか下位なのかを表すために、最低もう1ビット必要になります”とのご回答がありましたが、1ビット増えたら9ビットそれゆえ18ビットあれば足りると思うのですが、なにゆえ”結果として2バイト(=16ビット)ではおさまらず、実行効率を考えるとsizeof(char*)を4バイト(=32ビット)にせざるを得ません。”と言う結論に成るのか今ひとつ理解できません。何故まだ初心者ですので、その所を詳しくご教授できましたら幸いです。宜しく願います。