【掲示板ご利用上の注意】

 ※題名は具体的に!
 ※学校の課題の丸投げ禁止!
 ※ソースの添付は「HTML変換ツール」で字下げ!
 ※返信の引用は最小限に!
 ※環境(OSとコンパイラ)や症状は具体的に詳しく!
 ※返信付き投稿の削除は禁止!
 ※マルチポスト(多重投稿)は慎んで!

 詳しくはこちら


本当はこんなに大きく書きたくはないのですが、なかなか守っていただけなくて…。
 守ってくださいね。お願いします。(by管理人)

C言語ソース⇒HTML形式ツール掲示板2こちら


管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧

No.22858

ビット演算子の反転の意味
投稿者---Tegu(2005/08/27 18:39:56)


こんにちは。いつもお世話になっております。
反転のビット演算子のことですが、

int a,b;

a=5 ;
b=~a ;
printf(" ~a=%d\n",b);

これの結果-6みたいですが、なぜでしょうか
ご教授願います。


この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> Re:ビット演算子の反転の意味 22859 επιστημη 2005/08/27 19:00:36
<子記事> Re:ビット演算子の反転の意味 22860 Blue 2005/08/27 19:00:36
<子記事> 誠ありがとうございました 22861 Tegu 2005/08/27 20:06:36


No.22859

Re:ビット演算子の反転の意味
投稿者---επιστημη(2005/08/27 19:00:36)


>a=5 ;
>b=~a ;
>printf(" ~a=%d\n",b);
>
>これの結果-6みたいですが、なぜでしょうか

2の補数だから。
2の補数なら X + ^X = -1 です。



この投稿にコメントする

削除パスワード

No.22860

Re:ビット演算子の反転の意味
投稿者---Blue(2005/08/27 19:00:36)


C言語以前にビットの考え方について学習したほうがいいかもしれません。

(int型が4バイトとして)
int a = 5;
で a を16進であらわすと, 00000005
        2進であらわすと, 00000000000000000000000000000101

int b = ~a;
で b を 2進であらわすと, 11111111111111111111111111111010
       16進であらわすと, FFFFFFFa

となります。
よってbは負数なので2の補数から-6になります。



この投稿にコメントする

削除パスワード

No.22861

誠ありがとうございました
投稿者---Tegu(2005/08/27 20:06:36)


すぐわかりました。


この投稿にコメントする

削除パスワード

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧