ビット
日本語 | 微少 |
英語 | bit |
ふりがな | びっと |
フリガナ | ビット |
コンピューターにおける情報の最小単位。
ひとつのビットは「0」と「1」のうちどちらかを格納する。
コンピューター上のすべてのデータは「ビット」の集まりによって表現される。
たとえば「32ビット」の場合、ビットが32個集まって表現されていることになる。int型の変数1つにつき、「0か1」のスイッチを32個使うと考えるといいだろう。
32個のビットが集まって表現できる値の種類は「2の32乗=4294967296」。たとえば、この32個のビットで整数値を表現する場合、4294967296種類の整数値を表現できる。intの最大値と最小値-2147483648~2147483647はこうして決められている(正の方が1少ないのは0の分)。
ビットのひとつ上の単位にバイトがある。8ビット=1バイトとなる。
また、プログラム上でビット単位での表記はできず、代わりに16進数を用いて表記する。4ビット=16進数1桁となる。
ビット操作を行う場合には、上述の16進数や、「>>演算子」等のビットシフト演算子や、「&演算子」等のビット用論理演算子を用いる。
Javaではビットに関係するようなプログラムはあまり組むことがない。だが、生のデータや他のマシンと関係するプログラムを組む場合には考慮する必要がある場合もある。その場合には符号の有無、ビットフラグ、バイトオーダー等について考慮することになる。
ひとつのビットは「0」と「1」のうちどちらかを格納する。
コンピューター上のすべてのデータは「ビット」の集まりによって表現される。
たとえば「32ビット」の場合、ビットが32個集まって表現されていることになる。int型の変数1つにつき、「0か1」のスイッチを32個使うと考えるといいだろう。
32個のビットが集まって表現できる値の種類は「2の32乗=4294967296」。たとえば、この32個のビットで整数値を表現する場合、4294967296種類の整数値を表現できる。intの最大値と最小値-2147483648~2147483647はこうして決められている(正の方が1少ないのは0の分)。
ビットのひとつ上の単位にバイトがある。8ビット=1バイトとなる。
また、プログラム上でビット単位での表記はできず、代わりに16進数を用いて表記する。4ビット=16進数1桁となる。
ビット操作を行う場合には、上述の16進数や、「>>演算子」等のビットシフト演算子や、「&演算子」等のビット用論理演算子を用いる。
Javaではビットに関係するようなプログラムはあまり組むことがない。だが、生のデータや他のマシンと関係するプログラムを組む場合には考慮する必要がある場合もある。その場合には符号の有無、ビットフラグ、バイトオーダー等について考慮することになる。
参考サイト
- (参考サイトはありません)
// Sample.java
public class Sample
{
public static void main( String[] args )
{
// int型変数に格納された「1000000」がどのように
// ビットとして格納されているか見てみます。
int i = 1000000;
StringBuffer strbuf = new StringBuffer();
// 全ビットを右からチェックします。
for( int iF1 = 0; iF1 < 32; ++iF1 )
{
// 取得した順に出力すると逆順になるので、
// 取得した値を頭に挿入していきます。
strbuf.insert( 0, i & 1 );
// 右にひとつビットシフトします。
i = i >> 1;
}
// 出力します。
System.out.println( strbuf );
// 00000000000011110100001001000000
// このように、「1000000」というint型整数は、
// 「00000000000011110100001001000000」という
// 「0か1」を32個並べた形で格納されています。
}
}
public class Sample
{
public static void main( String[] args )
{
// int型変数に格納された「1000000」がどのように
// ビットとして格納されているか見てみます。
int i = 1000000;
StringBuffer strbuf = new StringBuffer();
// 全ビットを右からチェックします。
for( int iF1 = 0; iF1 < 32; ++iF1 )
{
// 取得した順に出力すると逆順になるので、
// 取得した値を頭に挿入していきます。
strbuf.insert( 0, i & 1 );
// 右にひとつビットシフトします。
i = i >> 1;
}
// 出力します。
System.out.println( strbuf );
// 00000000000011110100001001000000
// このように、「1000000」というint型整数は、
// 「00000000000011110100001001000000」という
// 「0か1」を32個並べた形で格納されています。
}
}
// Sample.java public class Sample { public static void main( String[] args ) { // int型変数に格納された「1000000」がどのように // ビットとして格納されているか見てみます。 int i = 1000000; StringBuffer strbuf = new StringBuffer(); // 全ビットを右からチェックします。 for( int iF1 = 0; iF1 < 32; ++iF1 ) { // 取得した順に出力すると逆順になるので、 // 取得した値を頭に挿入していきます。 strbuf.insert( 0, i & 1 ); // 右にひとつビットシフトします。 i = i >> 1; } // 出力します。 System.out.println( strbuf ); // 00000000000011110100001001000000 // このように、「1000000」というint型整数は、 // 「00000000000011110100001001000000」という // 「0か1」を32個並べた形で格納されています。 } }
「解説」に含まれているページ
- &&
- &=演算子
- &演算子
- 16進数
- 2の補数
- 2進数
- <<=演算子
- <<演算子
- >>=演算子
- >>>=演算子
- >>>演算子
- >>演算子
- ^=演算子
- ^演算子
- ASCII
- byte
- char
- double
- float
- int
- IPアドレス
- ISO-2022-JP
- ISO-8859-1
- long
- short
- unsigned
- Windows
- |=演算子
- |演算子
- ~演算子
- 「偽」
- 「真」
- ナローイング変換
- バイアス
- バイト
- ビット
- ビットシフト演算子
- ビットフラグ
- フラグ
- ワイドニング変換
- 仮数部
- 倍精度浮動小数点型
- 半角カタカナ
- 単精度浮動小数点型
- 実数
- 指数部
- 排他的論理和
- 整数
- 暗黙的
- 桁溢れ
- 桁落ち
- 浮動小数点
- 符号
- 算術右シフト
- 補数
- 論理右シフト
- 論理否定
- 論理和
- 論理演算
- 論理積
「サンプルプログラムとか」に含まれているページ
- &&
- &=演算子
- &演算子
- 0x
- 10進数
- 16進数
- 2の補数
- 2進数
- 8進数
- <<=
- <<=演算子
- <<演算子
- >>=演算子
- >>>=演算子
- >>>演算子
- >>演算子
- ^
- ^=演算子
- ^演算子
- byte
- char
- double
- float
- int
- Java仮想マシン
- long
- NaN
- short
- strictfp
- |=演算子
- |演算子
- ~演算子
- キャスト
- ストリーム
- ナローイング変換
- バイアス
- バイト
- ビット
- ビットシフト演算子
- ビットフラグ
- ワイドニング変換
- 代入変換
- 仮数部
- 倍精度浮動小数点型
- 単精度浮動小数点型
- 宣言
- 指数部
- 排他的論理和
- 整数
- 桁溢れ
- 桁落ち
- 浮動小数点
- 無理数
- 無限大
- 算術右シフト
- 補数
- 論理右シフト