バイナリ計算機
2進法で加算,減算,掛け算,割り算を行います. 2進法と10進法で変換します. 無料の数学計算機. すぐに結果を取得します.
バイナリー 数字 システム: コンピューター の 数える 方法
バイナリ数字系 (ベース-2) は,ビット (バイナリ数字) と呼ばれる 0 と 1 の2つの数字のみを使用します.すべてのコンピュータ,スマートフォン,デジタルデバイスは,電気回路が2つの異なる状態:高電圧 (1) と低電圧 (0) を確実に表現できるため,内部ですべての情報をバイナリで保存し,処理します.
二進数の各位置は 2の乗を表し 右から左に増加します
| 位置 | 2⁷ | 2⁶ | 2⁵ | 2⁴ | 2³ | 2² | 2¹ | 2⁰ |
|---|---|---|---|---|---|---|---|---|
| 価値 | 128 について | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
バイナリから小数点への変換:各ビットをその位数で掛け合わせる
例として:101101012= 1x128 + 0x64 + 1x32 + 1x16 + 0x8 + 1x4 + 0x2 + 1x1 = 128 + 32 + 16 + 4 + 1 =181 について
デシマルからバイナリ変換:繰り返し 2 で割って,各ステップで残りを記録し,残りを下から上まで読みます.
例: 181をバイナリに変換する:
- 181 ÷ 2 = 90 残り1
- 90 ÷ 2 = 45 残り0
- 45 ÷ 2 = 22 残り1
- 22 ÷ 2 = 11 残り0
- 11 ÷ 2 = 5 残り1
- 5 ÷ 2 = 2 残り1
- 2 ÷ 2 = 1 残り0
- 1 ÷ 2 = 0 残り1
下から上へ101101012 ✓
バイナリー算数:加算,減算,掛け算
10の代わりに2で実行されます. 計算は10の代わりに2で実行されます.
バイナリ加算のルール:0+0=0,0+1=1,1+0=1,1+1=10 (キャリー1),1+1+1=11 (キャリー1)
例: 10112 + 11012 (11 + 13 = 24)
1011 + 1101 ------ 11000
右から左へ: 1+1=10 (書き込み 0, 持ち込み 1); 1+0+1=10 (書き込み 0, 持ち込み 1); 0+1+1=10 (書き込み 0, 持ち込み 1); 1+1+1=11 (書き込み 1, 持ち込み 1); 最終的な持ち込みは書き込み 1. 結果: 110002 = 24
2の補数 (バイナリ減算):コンピュータは負の数と減算を2の補足式で処理する.数字の2の補足式を見つけるには,すべてのビットをひっくり返し,1を足す.
例: -13 は 8 ビット 2 の補足: +13 = 000011012 -> すべてのビットをフリップ -> 111100102 -> 1 を追加 ->■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ ■■■■■■■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■
これは加算として減算を行うことを可能にします: 20 - 13 = 20 + (-13).
バイナリ乗算エレガントである.各部分積は0 (0で掛けます) または左にシフトした数 (1で掛けます) である.例: 10112 x 1012 (11 x 5 = 55):
1011 × 101 ----- 1011 (1011 × 1) 0000 (1011 × 0,シフトした) 1011 (1011 × 1,シフトした2回) ------- 1101112 = 55
コンピューティングにおけるバイナリ: ビット,バイト,およびデータサイズ
コンピュータ,ストレージ,またはネットワークの速度で働く人にとって,バイナリ単位を理解することは不可欠です.
| ユニット | サイズ | 最大値 (署名なし) | 一般的な使用 |
|---|---|---|---|
| ビット | 1 バイナリ桁 | 1 | ブール式フラグ,単一のバイナリ値 |
| 噛み付く | 4 ビット | 15 (ヘックス:F) | ヘクサデシマルの1桁 |
| バイト | 8 ビット | 255 について | 単文字 (ASCII),カラーチャンネル |
| 単語 | 16 ビット | 65,535 人 | レガシー16ビットシステム,ユニコードベース |
| ダブルワード (DWORD) | 32 ビット | 4,294,967,295 人 | 32 ビット整数,IPv4 アドレス |
| クアッド・ワード (QWORD) | 64 ビット | 18,446,744,073,709,551,615 年 月 日 | 現代の整数,ポインタ,タイムスタンプ |
カラー値:ウェブの色は24ビットRGB (8ビット/チャンネル) を使用する. #FF5733 = R:255, G:87, B:51. 各8ビットチャンネルは256の色 (0 - 255) を表すことができる. 可能な色総数: 2563 =16,777,216 人(約1670万円) であった.
Unix/Linux でのファイル権限:rwxr-xr-- = 111 101 100 バイナリで = 7,5,4 オクタルで = chmod 754. 3 ビットの各セットは read (r=4), write (w=2), and execute (x=1) の権限を所有者,グループ,その他に表している.
ビット単位操作とその応用
ビット毎の演算は,整数内の個々のビットを操作する.それらは,低レベルのプログラミング,暗号化,ネットワークプログラミング,およびパフォーマンスクリティカルなコードに不可欠である.
| 運用 | シンボル | 行動 | 例 について |
|---|---|---|---|
| そして | & | 両方のビットが 1 ならば 1 | 1010 と 1100 = 1000 |
| OR | | | EITHER ビットが 1 であれば 1 | 1010です. 1100 は 1110 です. |
| XOR について | ^ | 1 ビットが異なる場合 | 1010 ^ 1100 = 0110 とする. |
| しない | ~ | すべてのビットを反転させる | ~1010 = 0101 |
| 左にシフト | << | 左にシフトビット (x2 各シフト) | 1011 << 1 = 10110 (x2) |
| 右にシフト | >> | 右にシフトビット (各シフトで÷2) | 1011 >> 1 = 0101 (÷2) |
実践的な用途:
- ビットマスク:特定のビットが設定されているか確認します.
if (flags & 0b0100) { ... }ビット2が1かチェックします. - ちょっとした設定:
flags = flags | 0b0100-- ビット2を現在の値に関係なく1に設定します - 片付けよう
flags = flags & ~0b01002位から0位をクリアします - 素早く2の乗で掛ける/割る
n << 3= n × 8 となる.n >> 2= n ÷ 4. ビットシフトはCPUレベルの操作であり,掛け算よりもはるかに速い. - 偶数/奇数のチェック:
if (n & 1) { /* odd */ }奇数の最後のビットは常に 1 です.
数値体系の比較: バイナリ,オクトル,デシマル,ヘクサデシマル
コンピュータサイエンスは,それぞれ異なる文脈に適した4つの数体系を使用しています.
| システム | ベース | 数字 | 一般的な使用 |
|---|---|---|---|
| バイナリ (ベース-2) | 2 | 0 〜 1 | CPU操作,ストレージ,ロジック |
| オクタル (ベース-8) | 8 | 0から7 | Unix ファイル権限,古いシステム |
| デシマル (ベース10) | 10 | 0から9 | 人間が読める数字 |
| ヘクサデシマル (ベース-16) | 16 | 0 - 9 , A - F | メモリアドレス,カラーコード,マシンコード |
素早く変換:バイナリ <-> ヘックス(4 バイナリ桁 = 1 ヘクサ桁)
| バイナリー | ヘックス | 十進数 | バイナリー | ヘックス | 十進数 |
|---|---|---|---|---|---|
| 0000 について | 0 | 0 | 1000 ドル | 8 | 8 |
| 0001 について | 1 | 1 | 1001 について | 9 | 9 |
| 0010 について | 2 | 2 | 1010 について | A | 10 |
| 0011 について | 3 | 3 | 1011 について | B | 11 |
| 0100 について | 4 | 4 | 1100 について | C | 12 |
| 0101 について | 5 | 5 | 1101 について | D | 13 |
| 0110 について | 6 | 6 | 1110 について | E | 14 |
| 0111 について | 7 | 7 | 1111 について | F | 15 |
この4ビットのグループ化は,二進数データのコンパクトな記号としてヘクスを非常に有用にします: 32ビットの値11001010 00111111 10110101 00001100より簡単に書くことができます.CA3FB50C.
ネットワークにおけるバイナリ: IP アドレスとサブネットマスク
2進法を理解することは ネットワークエンジニアリングに不可欠です なぜならIPv4アドレスは 基本的に32ビット2進法で ネットワークの分割プロセスである サブネットは 完全に2進法に 依存しているからです
IPv4 アドレスは192.168.1.100 税金について32 ビットバイナリ値の人間に読める記号です.
11000000.10101000.00000001.01100100
A サブネットマスクアドレスのどの部分がネットワークを識別し,どの部分がホストを識別するかを決定します.バイナリのマスク255.255.255.0は:
11111111.11111111.11111111.00000000
IP アドレスとサブネットマスクのビット間 AND は,ネットワークアドレスを示します.
| 構成要素 | 十進数 | バイナリー |
|---|---|---|
| IP アドレス | 192.168.1.100 税金について | 11000000.10101000.00000001.01100100 について |
| サブネットマスク | 255.255.255.0 | ■ ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ |
| ネットワーク (AND) | 192.168.1.0 | 11000000.10101000.00000001.00000000 及び 及び 及び |
CIDR記号 (例えば, /24) は,サブネットマスクにどれだけの先頭1ビットがあるかを示します. /24マスクには24の1に8の0が付いており,サブネットごとに28 - 2 = 254の使用可能なホストアドレスが許可されます. /16マスクは65,534のホストを許可します.ネットワークエンジニアは,サブネットを計画し,ブロードキャストアドレスを計算し,ルーティングのトラブルシューティングするために,毎日バイナリメンタル数学を使用します.
暗号とセキュリティにおけるバイナリ
現代の暗号化アルゴリズムは,XOR,ビットシフト,置換操作の組み合わせを通じて個々のビットを操作して,完全にバイナリレベルで動作します.バイナリを理解することは,デジタルセキュリティがどのように機能するかを理解するためのゲートウェイです.
XOR暗号化 (現代の暗号の基礎):XORにはユニークな特性があります -- 同じキーで2回適用すると元の値が返されます: A K K = A.これにより,XORはストリーム暗号とワンタイムパッドの基礎になります.
例:鍵10110010でバイト01001101 (ASCIIの文字"M") を暗号化する.
- テキスト: 01001101
- キー: 10110010
- XOR (暗号化): 11111111
- また同じキーでXOR: 01001101 = "M"
現代の暗号の鍵のサイズ:AES-128は128ビットキーを使用しており,観測可能な宇宙にある原子の数よりも多い2128 ~ 3.4 x 1038の可能なキーがあります.AES-256は2,256の可能性を持つ256ビットキーを使用しています.最速のスーパーコンピュータでさえ,これらのキースペースをブルートフォースすることはできません.各追加のビットが検索スペースを2倍にすると,暗号学ではキー長さが指数関数的に重要になります.
SHA-256のようなハッシュ関数は,入力から256ビット (32バイト) のバイナリ出力を生成します.入力に1ビットの変更でも,完全に異なるハッシュを生成します.これは"雪崩効果"と呼ばれる特性で,データ整合性を検証したり,パスワードを保存したり,ブロックチェーン技術に電力を供給するためにハッシュを有用にします.
バイナリと量子コンピューティング:クラシックなコンピュータはバイナリビット (0または1) を用いるが,量子コンピュータは,両方の状態の重組で同時に存在できる量子ビットを使用する. クラシックな256ビットキーには,連続的にチェックしなければならない2256の可能な値があります. グローバーのアルゴリズムを実行する量子コンピュータは,この空間を√(2256) = 2128の操作で検索することができます. これがポスト量子暗号が開発されている理由です. 量子敵に対してさえ安全であるバイナリベースの暗号化スキームを作成するためです.
よく 聞かれる 質問
なぜコンピューターは 桁数ではなく 二進数を使うのでしょうか?
電子回路は,オン (高電圧 ~ 1) とオフ (低電圧 ~ 0) の2つの異なる状態で最も信頼性が高い. 十進数で10の異なる状態を表すには,より正確な電圧制御が必要であり,電気的なノイズにはるかに敏感になります. バイナリーのシンプルさは,数十億のトランジスタが,毎秒数十億回の操作でGHzの速度で確実に動作することを可能にします.
1 バイトに収納できる 最大の数は?
バイト (8 ビット) は 28 = 256 の異なる値を表すことができます. 署名のない整数には: 0 から 255. 署名された整数 (二の補足): -128 から 127. バイナリで最大署名のないバイト値は 111111112 = 255; ヘックスでは FF です.
負の数を二進数に変換するには?
2の補足を使用する: (1) プラスのバージョンをバイナリに変換する, (2) すべてのビット (0->1, 1->0) を反転させる, (3) 1を追加する.例: -13 8ビットで: +13 = 000011012,反転ビット = 111100102, 1を追加する = 111100112. これは,すべての現代のコンピュータが負の整数を保存する方法です.
バイナリとヘクサデシマルの違いは何ですか?
両方ともコンピューティングで使用される位置数系である.バイナリ (ベース-2) はコンピュータの母語である 0 と 1 のみを使用する.ヘクサデシマル (ベース-16) は 0 - 9 と A - F をバイナリのコンパクトな記号として使用する - 4 つのバイナリ桁のそれぞれが正確に 1 つのヘクサ数字に対応する.ヘクサはメモリアドレス,カラーコード (#RRGGBB),および機械コードに使用される.なぜなら,原始バイナリよりもコンパクトで読みやすいからです.
ビット単位で処理するのは何ですか?
ビット毎の操作 (AND, OR, XOR, NOT,シフト) は,整数内の個々のビットを操作する.一般的な用途:ビットフラグと許可 (Unix chmod),偶数/奇数 (n & 1) のチェック, 2の乗による急速な掛け算/割り算 (ビットシフト),暗号化アルゴリズム,ハッシュ関数,CRCエラー検出,ネットワークサブネットマスク,ゲーム開発 (単一の整数内のコンパクト状態ストレージ).
プログラミングでは 0.1 + 0.2 ≠ 0.3 なぜ?
現代のほとんどのコンピュータは,二進法で小数点を表す IEEE 754 の二進法浮動小数点を用いる. 1/3 = 0.3333... が二進法で正確に表せないように, 1/10 は二進法で正確に表せない (無限に繰り返される二進法分数である). これは,ほとんどの言語で, 0.1 + 0.2 = 0.30000000000000004 の小さな丸めエラーを引き起こす. 正確な財務計算のために整数算術 (セントで働く,ドルではなく) または小数図書館を使用する.
バイナリーはデータストレージとファイルサイズでどのように使用されますか?
ストレージはバイト (8ビット),キロバイト (1,024バイト),メガバイト (1,024 KB),ギガバイト (1,024 MB) などで測定されます. 注:ハードディスクメーカーではSIプレフィックス (1 KB = 1,000バイト) が使用され,オペレーティングシステムではバイナリプレフィックス (1 KiB = 1,024バイト) が使用され,ストレージを購入する際に明らかな"欠けているスペース"の不一致が生じます. 1 TB ドライブは,Windows で ~ 931 GiB を表示するので,1,000,000,000,000 ÷ 1,073,741,824 ~ 931 です.
バイナリー・コード付き小数点 (BCD) とは?
BCDは,各十進数の数字を4ビットバイナリグループとしてコードします: 0=0000, 1=0001, ..., 9=1001. BCDの十進数93は1001 0011. BCDは,金融システム (浮動小数点丸めエラーを回避する),デジタルクロックとディスプレイ (7セグメントディスプレイがBCDを直接デコードする),および古いメインフレームシステムで使用されます.純粋なバイナリよりもスペース効率が低いが,重要なアプリケーションで十進数からバイナリ変換エラーを排除します.