unsigned
日本語 | 符号なし、無符号 |
英語 | unsigned |
ふりがな | あんさいんど |
フリガナ | アンサインド |
符号がないこと。
整数型の前に付けることで、整数型を符号なしにすることのできる予約語……ではない。
Javaには存在しない予約語。
C++言語には存在する予約語。
C++言語では、int等の整数型の前に付けることで、「符号なし整数値」として格納することができるようになる。
符号を持たないため、マイナスの値は格納できなくなるが、符号に使用している1ビットを数値表現に使用できるため、より大きな値を格納できるようになる。
C++言語のlong(注:C++言語のlongは4バイトであり、Javaのintに当たる)であれば、-2147483648~2147483647までの範囲となるのが、unsigned longであれば、符号に使用されている1ビットを数値表現に使用できるため、0~4294967295と、倍の数値を表現することができる。
そのため、マイナスの値を格納せず、その分大きな値を格納したい場合に使用されてきた。
Javaには「unsigned」という予約語は存在しないし、また、同等の機能もない。
charを除く整数型は全て符号を持ち、charは符号を持たない。これを変更する方法はない。
これは、元々この符号のありなしによる処理が分かりづらく、しばしばバグの原因であり、また、こういったビット操作をJavaでは嫌う傾向にあるためである。
代替として、Javaのlongは8バイトサイズであり、またBigDecimalクラスもあるため、大きな値を使用したい場合にはlongもしくはBigDecimalクラスを使用するのがいいだろう。
整数型の前に付けることで、整数型を符号なしにすることのできる予約語……ではない。
Javaには存在しない予約語。
C++言語には存在する予約語。
C++言語では、int等の整数型の前に付けることで、「符号なし整数値」として格納することができるようになる。
符号を持たないため、マイナスの値は格納できなくなるが、符号に使用している1ビットを数値表現に使用できるため、より大きな値を格納できるようになる。
C++言語のlong(注:C++言語のlongは4バイトであり、Javaのintに当たる)であれば、-2147483648~2147483647までの範囲となるのが、unsigned longであれば、符号に使用されている1ビットを数値表現に使用できるため、0~4294967295と、倍の数値を表現することができる。
そのため、マイナスの値を格納せず、その分大きな値を格納したい場合に使用されてきた。
Javaには「unsigned」という予約語は存在しないし、また、同等の機能もない。
charを除く整数型は全て符号を持ち、charは符号を持たない。これを変更する方法はない。
これは、元々この符号のありなしによる処理が分かりづらく、しばしばバグの原因であり、また、こういったビット操作をJavaでは嫌う傾向にあるためである。
代替として、Javaのlongは8バイトサイズであり、またBigDecimalクラスもあるため、大きな値を使用したい場合にはlongもしくはBigDecimalクラスを使用するのがいいだろう。
参考サイト
- (参考サイトはありません)
// Sample.java
public class Sample
{
public static void main( String[] args )
{
// unsignedは予約語として存在しません。
// unsigned int i = 100;
// コンパイルエラー:
// キーワード "int" に構文エラーがあります。正しくは "=", "*=", "/=", "%=", "+=", "-=", "<<=", ">>=", ">>>=", "&=", "^=", "|=", "++", "--" です。
// 予約語ではないので変数名として使用することも
// できます。勧めませんが。
int unsigned = -100;
System.out.println( unsigned );
// -100
}
}
public class Sample
{
public static void main( String[] args )
{
// unsignedは予約語として存在しません。
// unsigned int i = 100;
// コンパイルエラー:
// キーワード "int" に構文エラーがあります。正しくは "=", "*=", "/=", "%=", "+=", "-=", "<<=", ">>=", ">>>=", "&=", "^=", "|=", "++", "--" です。
// 予約語ではないので変数名として使用することも
// できます。勧めませんが。
int unsigned = -100;
System.out.println( unsigned );
// -100
}
}
// Sample.java public class Sample { public static void main( String[] args ) { // unsignedは予約語として存在しません。 // unsigned int i = 100; // コンパイルエラー: // キーワード "int" に構文エラーがあります。正しくは "=", "*=", "/=", "%=", "+=", "-=", "<<=", ">>=", ">>>=", "&=", "^=", "|=", "++", "--" です。 // 予約語ではないので変数名として使用することも // できます。勧めませんが。 int unsigned = -100; System.out.println( unsigned ); // -100 } }