2011年5月28日土曜日

64bit整数のビット演算の方法

環境:XCode4, Intel Core Duo (64bit)

定数1は32bit定数として扱われているため、
ビット演算なども32bitとして演算される。つまり、
UInt64 bitShiftValue = 1<<32 br=""> のように32bitを越える演算を行うと警告が出て、値はオーバーフローする。

32bit以上64bit以下でビット演算を行う場合、ULL(unsigned long long)を使用する。
現在のところMacでは1ULL (unsigned long long)が32bit/64bit環境共に64bit整数として保障されているらしいので、例えば
UInt64 bitShiftValue = 1ULL<<32 br=""> などとする。1ULでは環境依存になるのでよろしくない。

http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/Strings/Articles/formatSpecifiers.html

0 件のコメント: