Fortran 90 ビット関数
j = bit_size(i)
integer,intent(in) :: i
integer :: j
btest
整数iの第pos番目のビットが1(0)のとき.true.(.false.)を返す
l = btest(i,pos)
integer,intent(in) :: i, pos
logical :: l
iand,ieor,ior,not
iand:
整数i,jのビット論理積を返す
ieor:
整数i,jのビット排他的論理和を返す
ior :
整数i,jのビット論理和を返す
not :
整数iのビット否定を返す
l = iand(i,j)
l = ieor(i,j)
l = ior(i,j)
l = not(i)
integer,intent(in) :: i,j
logical :: l
ibclr,ibset
ibclr:
第pos番目のビットを0にした値を返す
ibset:
第pos番目のビットを1にした値を返す
k = ibclr(i,pos)
k = ibset(i,pos)
integer,intent(in) :: i, pos ! 0 <= pos < bit_size(i)
integer :: k
ibits
第pos番目のビットからlenビットを右づめし、残りのビットを0にする
k = ibits(i,pos,len)
integer,intent(in) :: i, pos, len ! 0 < pos+len <= bit_size(i), 0 < len
integer :: k
ishft
右を正としshift個だけビットをシフトする
端からはみ出たビットは捨てられ、反対側のはしに0が入る
k = ishft(i,shift)
integer,intent(in) :: i,shift ! abs(shift) <= bit_size(i)
ishftc
右端size個のビットを、右を正としshift個だけ循環シフトする
k = ishftc(i,shift [,size])
integer,intent(in) :: i
integer,intent(in) :: shift ! |shift| <= size
integer,intent(in) :: size ! 0 < size <= bit_size(i)
! default bit_size(i)
back