「256」のバイナリ表現とは何ですか?[閉まっている]


15

10進数を2進数に、2進数を10進数に変換できます。しかし、「256」という数字をどのように表現できますか?

255 = 11111111

1バイトに8桁を超える2進数(ビット)を含めることはできません。これはどのように可能ですか?


3
@Seriousがすでに言ったように。コンピューターは0からカウントを開始するため、もう1ビット必要です。これは、「
手話

2
あなたが実際に知りたいことを伝えるのが難しいので、私はこれを「本当の質問ではない」として閉じました。数値のバイナリ表現を知りたいですか?数字が1バイトに収まらない場合でも、数字が存在する可能性があることを疑問に思っていますか?データがビットとバイトでどのように保存されるのか疑問に思っていますか?はい、1バイトは1バイトの定義であるため、8ビットを超えることはできません。しかし、それは一般的な数に制限を課しません。
デアホッホステープラー

8ビットで256を表すことはできません。
オーバーマインド

回答:


40

256をバイナリで表現する方法を要求しますが、格納される最大数が255であるときに、なぜバイトは256の異なる数を格納できると言うのか疑問に思っていると思います。実際には最初の数字、1は2番目、2は3番目です... 255は256番目です。

また、11111111は、符号なしバイトの場合のみ255です。符号付きバイトがある場合(符号付き値は負の値を保持できるものです)、11111111は実際には-1です。http://en.wikipedia.org/wiki/Two's_complementを参照してください。他の人が言ったように、11111111にビットを追加し、データ型が8ビットのみをサポートできる場合、最後のビットはオーバーフローして残ります。 0.符号付きバイトの場合、値の範囲は-128〜127です。128個の負の数値+ 0 + 127個の正の数値=合計256個の数値。

符号付きの値の場合、最初のビットは「符号」ビットです。このビットが設定されている場合、数値は負です。10000000は負、01000000は正、11111111は負、01111111は正...

Windowsを使用している場合(おそらくMacにもあります)、電卓を開いてプログラマモードに切り替え、sbyteを選択し、ビットをいじって小数表現との相関を確認できます。

256を10進数と2進数で表示するWindows Calculator



11

既にご存知のように、255d(10進数)は11111111b(バイナリ)に相当します。値に1を追加する場合、2つの可能性があります。

どちらか8ビットしかありません。この場合、いわゆるオーバーフローが発生します。したがって、「内部的に」1が追加され、100000000b(9ビットで256d)になります。ただし、8ビットしか使用できないため、下位8ビットが「返されます」。そのため、最終的には0d = 0bになります(ほとんどのコンピューターアーキテクチャでは、特記事項として特別なオーバーフローフラグが設定されます)。

これは、指で数えるのと同じだと考えてください。あなたの指が9dを示していると想像してください。次に、もう1本指を追加します。最終的に10になります。もう1つ追加したい場合はどうしますか?

もう1つの可能性は、8ビット以上が使用可能であることです。この場合、最初にもう1桁追加するだけで、結果は実際に100000000b = 256dになります。

バイトは、コンピューターシステム(メモリシステム)がアドレスできる最小の「ユニット」です。つまり、1ビットだけを知りたい場合は、メモリシステムにアドレスから特定のバイトを提供するように依頼し、自分の興味のあるビットの値を把握する必要があります。

しかし、8ビットが1バイトを構成するのと同じように、より大きなデータ型もあります。2バイトはワード(16ビット)を構成し、2ワード(4バイト、32ビット)はダブルワードを構成します。そして、今日の標準64ビットアーキテクチャには、64ビットデータ型(いわゆるレジスタ)さえあります。


はい、コンピューターはこれらの64ビットを8つの独立したバイトのグループとしてではなく、64ビットで構成される単一のユニットとして考えています。たとえば、符号付きの値がある場合、それらの64ビットのうちの1つだけが符号ビットです。
ミスターリスター

5

100000000であり、1バイト以上必要です。実際には9ビットが必要です。


0

ビットシフト演算で表現できます(バイナリ表現のエンディアンに応じて左または右)。たとえば、この1つのライナーはビッグエンディアン表現(最上位バイトが最初)で機能します。

1 << 8

署名なし バイトは、[0-255]の範囲を含む256個の値のみを保持できます。値256の場合、より大きな値(整数など)を保持できるデータ型を使用する必要があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.