サイタプログラミングスクールC言語プログラミング入門講座神奈川 楽しめるC言語セミナー スクールブログ 負の整数の2進...

負の整数の2進数数値表現

前回は、整数の範囲について書きました。

その最後で、「負の整数の2進数数値表現は、どのようになるのか」という点に触れました。今回は、この点について書きます。

まず、結論から書きます。

負の整数の2進数数値表現は、「正の整数の2進数数値表現の全ビットの0/1を入れ換えて、最後に1を加えたもの」になります。

例として、1バイトの大きさをもつ整数100の場合で示します。

整数100は、2進数数値表現で「01100100」となります。

この表現の全ビットの0/1を入れ換えます。すると「10011011」となります。

最後に、1を加えて「10011100」となります。これが、100に対する負の整数である「-100」の2進数数値表現となります。

このとき、100に対する負の整数-100のように、基準となる数値に加えた場合の答えが0となるような整数のことを「補数」と呼びます。そして、2進数の場合の補数のことを「2の補数」と呼びます。

2の補数の作り方は、前述した「全ビットの0/1反転→最後に1を加える」になります。

ここで、負の整数を2進数数値表現で表した場合に最上位のビットが必ず「1」となることに、注目してください。この最上位のビットのことを、特に「符号ビット」と呼びます。

C言語の場合で最上位ビットを符号ビットとして扱うかどうかは、数値の型(shortやlong等)の前に「signed」または「unsigned」を付けることで制御します。前者が符号ビットにする、後者が符号ビットにしない(即ち、より広い範囲の正の整数が取り扱える)、となります。いずれも指定しない場合は、符号ビットにする動作となります。

さて前回のブログで、負の整数を取り扱う場合に負の整数の範囲のほうが1だけ広いことに触れました。これは、「符号ビットだけが1、他が0」(例えば1バイトで表すと10000000)の表現が負になる(= -128)ことが理由です。正の整数は「0〜127」の128個、負の整数は「-1〜-128」の128個が取り扱える、ということですね。

今回触れた2の補数の考え方は、基本情報技術者試験用の各種参考書で説明されていますので、お持ちの方はそちらも参考にしてください。

さて次回と次々回ですが、少しC言語から離れて前回の「整数の範囲」に焦点をあてて、過去のお話と未来起こる可能性の問題のお話に触れましょう。

 

(2014年4月7日(月) 15:24)

前の記事

次の記事

新着記事

レッスンを受講中の皆様へ コーチの源田です。 7/8以降の取り扱いについて、会社と話し合いをした結果以下のように決めました。 (1) 新規体験レッスン これは、さすがに会社在籍中は停止せざるを得ません。したがって、当面受付停止となります。 (2) 継続受講中の生徒...

レッスンを継続受講中の皆様へ コーチの源田です。 今後について、記させていただきます。 ・〜2019/7/7 現状通りのペースでレッスンを実施いたします。 ・2019/7/8〜 この日より、フリーランスから会社勤務に切り替わることになります。 来週中に、継...

コーチの源田です。 予定していた内容と変わる点、ご容赦ください。 皆さんに、重要なお知らせがあります。 このたび一身上の都合により、新規の体験レッスン募集をしばらく停止させていただくこととしました。 再開に関しては、今後の進捗状況により可能と判断した場合に、その時点で再...

コーチの源田です。 今回は、C言語の制御文について記します。 他のプログラミング言語でもそうですが、制御文は前回と前々回の投稿で記したアルゴリズムの基本構造の  ・ 選択構造  ・ 反復構造 をコードで表現するためのものなのです。 ここでC言語の場合における...

コーチの源田です。 フローチャートの部分図紹介。今回は、残りの反復構造になります。 (3) 反復構造 (3-a) 周回数重視 添付画像の1枚目の図が、周回数重視の反復構造の部分図になります。 繰り返したい処理構造の範囲を、上向きと下向きの台形のような図形でくくる感...

レッスン無料相談窓口のご案内

サイタでは、C言語レッスンに関する疑問に
専門カウンセラーがお電話にてご案内しております。
お気軽にご利用ください。

お電話相談窓口はコチラ

ブログ記事 ページ先頭へ