short
日本語 | 短 |
英語 | short |
ふりがな | しょーと |
フリガナ | ショート |
プリミティブ型のひとつ。
整数値を格納するための型。
ラッパークラスはShortクラス。
short型で宣言された変数は、16ビット(2バイト)分のメモリ領域を使用する。
左端のビットは正負のフラグとなり、0がプラス、1がマイナスを表す。
残りの15ビットと合わせて、-32768~32767の整数値を格納することができる(マイナスの場合は2の補数を使用する)。
整数値を扱いたい場合は通常int型を使用する。計算目的でshort型を使用する機会は少ない。
>>演算子等、一部の演算子はshort型をint型へキャストする(数値格上げ変換)ため、素直にint型を使用した方がいいだろう。
同じ「2バイトの整数値」を格納するプリミティブ型にchar型がある。
short型は通常の整数値を格納するために使用し、対してchar型は文字を表す整数値を格納するために使用する。
short型は符号付き、char型は符号なしという大きな違いがある。符号を用いた通常の計算を行うため、通常の整数値はshort型の変数に格納した方がいいだろう。
整数値を格納するための型。
ラッパークラスはShortクラス。
short型で宣言された変数は、16ビット(2バイト)分のメモリ領域を使用する。
左端のビットは正負のフラグとなり、0がプラス、1がマイナスを表す。
残りの15ビットと合わせて、-32768~32767の整数値を格納することができる(マイナスの場合は2の補数を使用する)。
整数値を扱いたい場合は通常int型を使用する。計算目的でshort型を使用する機会は少ない。
>>演算子等、一部の演算子はshort型をint型へキャストする(数値格上げ変換)ため、素直にint型を使用した方がいいだろう。
同じ「2バイトの整数値」を格納するプリミティブ型にchar型がある。
short型は通常の整数値を格納するために使用し、対してchar型は文字を表す整数値を格納するために使用する。
short型は符号付き、char型は符号なしという大きな違いがある。符号を用いた通常の計算を行うため、通常の整数値はshort型の変数に格納した方がいいだろう。
参考サイト
// Sample.java
public class Sample
{
public static void main( String[] args )
{
// short型の変数を宣言します。
short sh;
// メモリ上に16ビットの領域が確保されました。
// ここに整数値10000を格納します。
sh = 10000;
// それを出力します。
System.out.println( sh );
// 10000
// short型変数に格納された「10000」がどのように
// ビットとして格納されているか見てみます。
outputShortBit( sh );
// 0010011100010000
// このように、「10000」というshort型整数は、
// 「0010011100010000」という
// 「0か1」を16個並べた形で格納されています。
// 最大値と最小値はShortクラスのstaticフィールド
// として宣言されているのでそれを使いましょう。
sh = Short.MAX_VALUE;
System.out.println( sh );
outputShortBit( sh );
// 32767
// 0111111111111111
sh = Short.MIN_VALUE;
System.out.println( sh );
outputShortBit( sh );
// -32768
// 1000000000000000
}
/**
* short型変数の中身をビット形式で出力します。
*/
private static void outputShortBit( short sh )
{
short flag = 1;
StringBuffer strbuf = new StringBuffer();
// 全ビットを右からチェックします。
for( int iF1 = 0; iF1 < 16; ++iF1 )
{
// 取得した順に出力すると逆順になるので、
// 取得した値を頭に挿入していきます。
if( ( sh & flag ) == 0 )
{
strbuf.insert( 0, "0" );
}
else
{
strbuf.insert( 0, "1" );
}
// 2倍することでビットシフトします。
flag *= 2;
// (<<演算子を使用するとint型にキャスト
// されるので*演算子を使用しています)
}
System.out.println( strbuf );
}
}
public class Sample
{
public static void main( String[] args )
{
// short型の変数を宣言します。
short sh;
// メモリ上に16ビットの領域が確保されました。
// ここに整数値10000を格納します。
sh = 10000;
// それを出力します。
System.out.println( sh );
// 10000
// short型変数に格納された「10000」がどのように
// ビットとして格納されているか見てみます。
outputShortBit( sh );
// 0010011100010000
// このように、「10000」というshort型整数は、
// 「0010011100010000」という
// 「0か1」を16個並べた形で格納されています。
// 最大値と最小値はShortクラスのstaticフィールド
// として宣言されているのでそれを使いましょう。
sh = Short.MAX_VALUE;
System.out.println( sh );
outputShortBit( sh );
// 32767
// 0111111111111111
sh = Short.MIN_VALUE;
System.out.println( sh );
outputShortBit( sh );
// -32768
// 1000000000000000
}
/**
* short型変数の中身をビット形式で出力します。
*/
private static void outputShortBit( short sh )
{
short flag = 1;
StringBuffer strbuf = new StringBuffer();
// 全ビットを右からチェックします。
for( int iF1 = 0; iF1 < 16; ++iF1 )
{
// 取得した順に出力すると逆順になるので、
// 取得した値を頭に挿入していきます。
if( ( sh & flag ) == 0 )
{
strbuf.insert( 0, "0" );
}
else
{
strbuf.insert( 0, "1" );
}
// 2倍することでビットシフトします。
flag *= 2;
// (<<演算子を使用するとint型にキャスト
// されるので*演算子を使用しています)
}
System.out.println( strbuf );
}
}
// Sample.java public class Sample { public static void main( String[] args ) { // short型の変数を宣言します。 short sh; // メモリ上に16ビットの領域が確保されました。 // ここに整数値10000を格納します。 sh = 10000; // それを出力します。 System.out.println( sh ); // 10000 // short型変数に格納された「10000」がどのように // ビットとして格納されているか見てみます。 outputShortBit( sh ); // 0010011100010000 // このように、「10000」というshort型整数は、 // 「0010011100010000」という // 「0か1」を16個並べた形で格納されています。 // 最大値と最小値はShortクラスのstaticフィールド // として宣言されているのでそれを使いましょう。 sh = Short.MAX_VALUE; System.out.println( sh ); outputShortBit( sh ); // 32767 // 0111111111111111 sh = Short.MIN_VALUE; System.out.println( sh ); outputShortBit( sh ); // -32768 // 1000000000000000 } /** * short型変数の中身をビット形式で出力します。 */ private static void outputShortBit( short sh ) { short flag = 1; StringBuffer strbuf = new StringBuffer(); // 全ビットを右からチェックします。 for( int iF1 = 0; iF1 < 16; ++iF1 ) { // 取得した順に出力すると逆順になるので、 // 取得した値を頭に挿入していきます。 if( ( sh & flag ) == 0 ) { strbuf.insert( 0, "0" ); } else { strbuf.insert( 0, "1" ); } // 2倍することでビットシフトします。 flag *= 2; // (<<演算子を使用するとint型にキャスト // されるので*演算子を使用しています) } System.out.println( strbuf ); } }