JavaA2Z

KAB-studio > プログラミング > JavaA2Z > バイトとは

バイト

日本語 バイト
英語 byte
ふりがな ばいと
フリガナ バイト

解説

コンピューターにおける情報の単位のひとつ。
 
1バイトは8ビットである。
つまりビットが8個並んでいたらそれが1バイトである。
たとえば、int変数のサイズは32ビット=4バイトのサイズということになる。
また、16進数1桁は4ビットなので、1バイトは16進数で2桁となり、1バイトを16進数2桁で表現することが多い。

1バイトは2の8乗、つまり256種類の表現が可能である。
 
プリミティブ型に、この1バイト分のデータを格納できるbyteが存在する。
byte変数はメモリ上に8ビットの領域を確保し、-128~127までの整数値を格納することができる。
つまり文字通り、1バイト分のデータを格納できる。
そのため、バイト単位の操作をう際にこのを使用することが多い。
 
Javaでは、1バイトは8ビットである。
だが、1バイトが8ビットではないプラットフォームも存在する。
バイトは本来「ひとかたまりのビット」という意味である。そしてそのビットの数は、コンピューターやOSによって異なる。最近のものはほとんどが8ビットだが、昔のものは5ビットや7ビットのものもある。
ネットワークを通して他のコンピューターにデータを送信する際に、1バイトが8ビットではないコンピューターやOSに送信すると問題が発生する可能性があるため、珍しいコンピューターやOSの場合には確認した方がいいだろう。

参考サイト

  • (参考サイトはありません)

(KAB-studioからのおしらせです)

サンプルプログラム(とか)サンプルを別ウィンドウで表示サンプルをクリップボードへコピー(WindowsでIEの場合のみ)

// Sample.java
public class Sample
{
    public static void main( String[] args )
    {
        // int型の変数を宣言します。
        int i;
        // メモリ上に32ビットの領域が確保されました。

        // ここに整数値1000000を格納します。
        i = 1000000;
        // それを出力します。
        System.out.println( i );
        // 1000000

        // int型変数に格納された「1000000」がどのように
        // ビットとして格納されているか見てみます。
        outputIntBit( i );
        // 00000000 00001111 01000010 01000000

        // このように、「1000000」というint型整数は、
        // 「00000000 00001111 01000010 01000000」という
        // 「0か1」を32個並べた形で格納されています。

        // で、このスペースで区切った、8ビットずつの塊が
        // 「バイト」です。
        // int型変数は32ビットなので4バイトということに
        // なり、それぞれのバイトは
        // 「00000000」「00001111」「01000010」「01000000」
        // となるわけです。

        // ただ、8ビットをそのまま書くと長くなるので、
        // 16進数を使って表記することが多いです。
        // 16進数1桁は4ビットなので、1バイトは16進数2桁で
        // 表現できます。
        outputIntByte( i );
        // 00 0f 42 40
    }


    /**
     * int型変数の中身をビット形式で出力します。
     */
    private static void outputIntBit( int i )
    {
        // int型変数をビット形式で文字列化します。
        String source = Integer.toBinaryString( i );
        // 左0埋めします。
        StringBuffer strbuf = new StringBuffer();
        forint iF1 = source.length(); iF1 < 32; ++iF1 )
        {
            strbuf.append( "0" );
        }
        strbuf.append( source );

        // バイト単位になるようスペースを入れます。
        strbuf.insert( 24, " " );
        strbuf.insert( 16, " " );
        strbuf.insert( 8, " " );

        System.out.println( strbuf.toString() );
    }

    /**
     * int型変数の中身をバイト形式で出力します。
     */
    private static void outputIntByte( int i )
    {
        // int型変数を16進数形式で文字列化します。
        String source = Integer.toHexString( i );
        // 左0埋めします。
        StringBuffer strbuf = new StringBuffer();
        forint iF1 = source.length(); iF1 < 8; ++iF1 )
        {
            strbuf.append( "0" );
        }
        strbuf.append( source );

        // バイト単位になるようスペースを入れます。
        strbuf.insert( 6, " " );
        strbuf.insert( 4, " " );
        strbuf.insert( 2, " " );

        System.out.println( strbuf.toString() );
    }
}
// Sample.java
public class Sample
{
    public static void main( String[] args )
    {
        // int型の変数を宣言します。
        int i;
        // メモリ上に32ビットの領域が確保されました。

        // ここに整数値1000000を格納します。
        i = 1000000;
        // それを出力します。
        System.out.println( i );
        // 1000000

        // int型変数に格納された「1000000」がどのように
        // ビットとして格納されているか見てみます。
        outputIntBit( i );
        // 00000000 00001111 01000010 01000000

        // このように、「1000000」というint型整数は、
        // 「00000000 00001111 01000010 01000000」という
        // 「0か1」を32個並べた形で格納されています。

        // で、このスペースで区切った、8ビットずつの塊が
        // 「バイト」です。
        // int型変数は32ビットなので4バイトということに
        // なり、それぞれのバイトは
        // 「00000000」「00001111」「01000010」「01000000」
        // となるわけです。

        // ただ、8ビットをそのまま書くと長くなるので、
        // 16進数を使って表記することが多いです。
        // 16進数1桁は4ビットなので、1バイトは16進数2桁で
        // 表現できます。
        outputIntByte( i );
        // 00 0f 42 40
    }


    /**
     * int型変数の中身をビット形式で出力します。
     */
    private static void outputIntBit( int i )
    {
        // int型変数をビット形式で文字列化します。
        String source = Integer.toBinaryString( i );
        // 左0埋めします。
        StringBuffer strbuf = new StringBuffer();
        for( int iF1 = source.length(); iF1 < 32; ++iF1 )
        {
            strbuf.append( "0" );
        }
        strbuf.append( source );

        // バイト単位になるようスペースを入れます。
        strbuf.insert( 24, " " );
        strbuf.insert( 16, " " );
        strbuf.insert( 8, " " );

        System.out.println( strbuf.toString() );
    }

    /**
     * int型変数の中身をバイト形式で出力します。
     */
    private static void outputIntByte( int i )
    {
        // int型変数を16進数形式で文字列化します。
        String source = Integer.toHexString( i );
        // 左0埋めします。
        StringBuffer strbuf = new StringBuffer();
        for( int iF1 = source.length(); iF1 < 8; ++iF1 )
        {
            strbuf.append( "0" );
        }
        strbuf.append( source );

        // バイト単位になるようスペースを入れます。
        strbuf.insert( 6, " " );
        strbuf.insert( 4, " " );
        strbuf.insert( 2, " " );

        System.out.println( strbuf.toString() );
    }
}

この単語を含むページ

はてなブックマーク 詳細を表示 はてなブックマーク ブックマーク数
livedoorクリップ 詳細を表示 livedoorクリップ ブックマーク数
Yahoo!ブックマーク 詳細を表示 users
del.icio.us 登録する RSSに登録
サンプルを別ウィンドウで表示
サンプルをクリップボードへコピー(WindowsでIEの場合のみ)
update:2010/05/02
このページは、Javaプログラミング言語についての用語を網羅した辞書「JavaA2Z」の一ページです。
詳しくは「JavaA2Z」表紙の説明をご覧ください。