The definitions are:
The alternate external versions for MIL-STD-1753 are:
iand( m, n ) |
Computes the bitwise and of its arguments. |
ior( m, n ) |
Computes the bitwise inclusive or of its arguments. |
ieor( m, n ) |
Computes the bitwise exclusive or of its arguments. |
ishft( m, k ) |
Is a logical shift with no end around carry (left if k>0, right if k<0). |
ishftc( m, k, ic ) |
Circular shift: right-most ic bits of m are left-shifted circularly k places. |
ibits( m, i, len ) |
Extracts bits: from m, starting at bit i, extracts len bits. |
ibset( m, i ) |
Sets bit: return value is equal to word m with bit number i set to 1. |
ibclr( m, i ) |
Clears bit: return value is equal to word m with bit number i set to 0. |
btest( m, i ) |
Tests bit i in m; returns LOGICAL .true. if the bit is 1, and .false. if it is 0. |
See also 1.4.36 mvbits: Move a Bit Field, and Chapters 2 and 3 for other functions that manipulate bit fields.
For the intrinsic functions:
x = and( word1, word2 ) |
x = or( word1, word2 ) |
x = xor( word1, word2 ) |
x = not( word ) |
x = rshift( word, nbits ) |
x = lshift( word, nbits ) |
word, word1, word2, nbits are integer input arguments. These are intrinsic functions expanded inline by the compiler. The data type returned is that of the first argument.
No test is made for a reasonable value of nbits.
Example: and, or, xor, not:
demo% cat tandornot.f print 1, and(7,4), or(7,4), xor(7,4), not(4) 1 format(4x ’and(7,4)’, 5x ’or(7,4)’, 4x ’xor(7,4)’, 1 6x ’not(4)’/4o12.11) end demo% f95 tandornot.f demo% a.out and(7,4) or(7,4) xor(7,4) not(4) 00000000004 00000000007 00000000003 37777777773 demo% |
Example: lshift, rshift:
demo% cat tlrshift.f integer*4 lshift, rshift print 1, lshift(7,1), rshift(4,1) 1 format(1x ’lshift(7,1)’, 1x ’rshift(4,1)’/2o12.11) end demo% f95 tlrshift.f demo% a.out lshift(7,1) rshift(4,1) 00000000016 00000000002 demo% |
For the subroutines and functions
call bic( bitnum, word ) |
call bis( bitnum, word ) |
call setbit( bitnum, word, state ) |
LOGICAL bit x = bit( bitnum, word ) |
bitnum, state, and word are INTEGER*4 input arguments. Function bit() returns a logical value.
Bits are numbered so that bit 0 is the least significant bit, and bit 31 is the most significant.
bic, bis, and setbit are external subroutines. bit is an external function.
Example 3: bic, bis, setbit, bit:
integer*4 bitnum/2/, state/0/, word/7/ logical bit print 1, word 1 format(13x ’word’, o12.11) call bic( bitnum, word ) print 2, word 2 format(’after bic(2,word)’, o12.11) call bis( bitnum, word ) print 3, word 3 format(’after bis(2,word)’, o12.11) call setbit( bitnum, word, state ) print 4, word 4 format(’after setbit(2,word,0)’, o12.11) print 5, bit(bitnum, word) 5 format(’bit(2,word)’, L ) end <output> word 00000000007 after bic(2,word) 00000000003 after bis(2,word) 00000000007 after setbit(2,word,0) 00000000003 bit(2,word) F |