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 );
}
}




