Java Programming Language

開発段階にあるJDK8に「符号なし整数」に関する演算APIが追加されたことが「Unsigned Integer Arithmetic API now in JDK 8」において発表された。追加されたのは符号なし整数の比較演算、符号なし整数の除算、符号なし整数の剰余算、符号なし整数と文字列の双方向変換処理など。主にjava.lang.Integerおよびjava.lang.Longにおけるスタティックメソッドとして実装されている。どのような機能が追加されたかはchangeset 4922:71200c517524を見るとわかりやすい。

Javaの整数(byte, short, int, long)は符号付き整数で、符号なし整数として型宣言する機能は仕様としては提供されていない。今回追加された符号なし整数に関する機能はJava仮想マシンレベルでの拡張ではなく、特別に配慮が必要になる除算に関するものをAPIレベルで実装するというもの。2の補数はビット単位でみた場合、加算・減算・積算に関しては符号付き整数同士の演算と、符号なし整数同士の演算は同じになる。このため、今回のAPIとしては除算と剰余算のみが追加されている。

今回追加された符号なし整数に関する演算APIは、符号なし整数対応の最初の取り組みとなる。今後どのような形で符号なし整数の対応が盛り込まれていくかは今後の検討課題となるが、APIレベルであっても符号なし整数のサポートがはじまったことは注目に値する。