マイナス記号は何をしましたか.
1106 ワード
1.1と-1はメモリにどのように表示されますか?
2.数にマイナス記号を付けるとメモリでどのように変化しますか?
3.一つの練習が引き起こす思考.
まず、charをバイナリ表現に変換するための小さなツールを導入します.
使用方法:
出力:
さらに数を印刷します.
新しい発見:
1のバイナリ表示は00000001で、逆:11111111110、プラス1:11111111、等しい:-1:1111111111
3のバイナリ表現は0000011で、逆:11111111100、プラス1:11111101、等しい:-3:1111101
4のバイナリ表現は00000100で、逆:11111011、プラス1:11111100、等しい:-4:1111111100
大胆に結論を出して、マイナス記号の作用はメモリのバイナリビットに対して逆プラス1を取ることです.
どうして上の考えがあるの?
signed charの最小値を求める問題を解くからだ.
本人の書き方は(char)((unsigned char)~0>>1)+1)
本の答えは-(char)(unsigned char)~0>>1)
答えがどうしてそんなに書いたのかずっと分からない.最後に答えが間違っていることに気づいた.
そのタイトルは
2.数にマイナス記号を付けるとメモリでどのように変化しますか?
3.一つの練習が引き起こす思考.
まず、charをバイナリ表現に変換するための小さなツールを導入します.
static void n2(unsigned char c) {
int i;
for (i = 0; i < 8; i++) {
if (128 & c)
putchar('1');
else
putchar('0');
c <<= 1;
}
printf("
");
}
使用方法:
n2(1);
n2(-1);
出力:
1:00000001
-1:11111111
さらに数を印刷します.
3:00000011
-3:11111101
4:00000100
-4:11111100
新しい発見:
1のバイナリ表示は00000001で、逆:11111111110、プラス1:11111111、等しい:-1:1111111111
3のバイナリ表現は0000011で、逆:11111111100、プラス1:11111101、等しい:-3:1111101
4のバイナリ表現は00000100で、逆:11111011、プラス1:11111100、等しい:-4:1111111100
大胆に結論を出して、マイナス記号の作用はメモリのバイナリビットに対して逆プラス1を取ることです.
どうして上の考えがあるの?
signed charの最小値を求める問題を解くからだ.
本人の書き方は(char)((unsigned char)~0>>1)+1)
本の答えは-(char)(unsigned char)~0>>1)
答えがどうしてそんなに書いたのかずっと分からない.最後に答えが間違っていることに気づいた.
そのタイトルは