なぜ、〜177は-178となり、〜0177は-128となるのですか?0177対177およびそれらの相補物
前と後の値を印刷してみましたが、何も識別できませんでした。私はこの話題を説明することもできませんでした。私は "The C Programming Language"を読んでいます。
なぜ、〜177は-178となり、〜0177は-128となるのですか?0177対177およびそれらの相補物
前と後の値を印刷してみましたが、何も識別できませんでした。私はこの話題を説明することもできませんでした。私は "The C Programming Language"を読んでいます。
定数177
と0177
は同じ値ではありません。前者は後者が8進数の10進数です。 C standardのセクション6.4.4.1から
は:
小数点定数はゼロ以外の数字で始まり、桁の配列からなります。 8進数の定数は、接頭辞0 と、0から7までの数字のシーケンスで構成されています。 16進定数は接頭辞0xまたは0Xと、それに続く十進数の シーケンスと、文字a(またはA)〜f(または F)(値10〜15)で構成されます。
小数定数の値は、基数10で計算されます。 、8進定数のもの8;語彙的に最初の数字が で最も重要です。
8進定数0177
は127で小数点第4位です。 32ビットの16進値として、0x0000007fと表されます。この値に~
演算子を使用すると、0xffffff80が得られます。負の数に対して2の補数表現を仮定すると、これは小数点で-128です。
先頭のゼロは、0177
が8進数(127)であることを示します。
'0'は8進表記の接頭辞であるためです。 –
http://stackoverflow.com/questions/791328/how-does-the-bitwise-complement-operator-work – rsp