Initial data commit
This commit is contained in:
parent
72d218235f
commit
f23f22d71c
199087 changed files with 3378941 additions and 0 deletions
27
Task/Bitwise-operations/Fortran/bitwise-operations-1.f
Normal file
27
Task/Bitwise-operations/Fortran/bitwise-operations-1.f
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
integer :: i, j = -1, k = 42
|
||||
logical :: a
|
||||
|
||||
i = bit_size(j) ! returns the number of bits in the given INTEGER variable
|
||||
|
||||
! bitwise boolean operations on integers
|
||||
i = iand(k, j) ! returns bitwise AND of K and J
|
||||
i = ior(k, j) ! returns bitwise OR of K and J
|
||||
i = ieor(k, j) ! returns bitwise EXCLUSIVE OR of K and J
|
||||
i = not(j) ! returns bitwise NOT of J
|
||||
|
||||
! single-bit integer/logical operations (bit positions are zero-based)
|
||||
a = btest(i, 4) ! returns logical .TRUE. if bit position 4 of I is 1, .FALSE. if 0
|
||||
i = ibclr(k, 8) ! returns value of K with 8th bit position "cleared" (set to 0)
|
||||
i = ibset(k, 13) ! returns value of K with 13th bit position "set" (set to 1)
|
||||
|
||||
! multi-bit integer operations
|
||||
i = ishft(k, j) ! returns value of K shifted by J bit positions, with ZERO fill
|
||||
! (right shift if J < 0 and left shift if J > 0).
|
||||
i = ishftc(k, j) ! returns value of K shifted CIRCULARLY by J bit positions
|
||||
! (right circular shift if J < 0 and left if J > 0)
|
||||
i = ishftc(k, j, 20) ! returns value as before except that ONLY the 20 lowest order
|
||||
! (rightmost) bits are circularly shifted
|
||||
i = ibits(k, 7, 8) ! extracts 8 contiguous bits from K starting at position 7 and
|
||||
! returns them as the rightmost bits of an otherwise
|
||||
! zero-filled integer. For non-negative K this is
|
||||
! arithmetically equivalent to: MOD((K / 2**7), 2**8)
|
||||
1
Task/Bitwise-operations/Fortran/bitwise-operations-2.f
Normal file
1
Task/Bitwise-operations/Fortran/bitwise-operations-2.f
Normal file
|
|
@ -0,0 +1 @@
|
|||
call mvbits(k, 2, 4, j, 0) ! copy a sequence of 4 bits from k starting at bit 2 into j starting at bit 0
|
||||
25
Task/Bitwise-operations/Fortran/bitwise-operations-3.f
Normal file
25
Task/Bitwise-operations/Fortran/bitwise-operations-3.f
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
program bits_rosetta
|
||||
implicit none
|
||||
|
||||
call bitwise(14,3)
|
||||
|
||||
contains
|
||||
|
||||
subroutine bitwise(a,b)
|
||||
implicit none
|
||||
integer, intent(in):: a,b
|
||||
character(len=*), parameter :: fmt1 = '(2(a,i10))'
|
||||
character(len=*),parameter :: fmt2 = '(3(a,b32.32),i20)'
|
||||
|
||||
write(*,fmt1) 'input a=',a,' b=',b
|
||||
write(*,fmt2) 'and : ', a,' & ',b,' = ',iand(a, b),iand(a, b)
|
||||
write(*,fmt2) 'or : ', a,' | ',b,' = ',ior(a, b),ior(a, b)
|
||||
write(*,fmt2) 'xor : ', a,' ^ ',b,' = ',ieor(a, b),ieor(a, b)
|
||||
write(*,fmt2) 'lsh : ', a,' << ',b,' = ',shiftl(a,b),shiftl(a,b) !since F2008, otherwise use ishft(a, abs(b))
|
||||
write(*,fmt2) 'rsh : ', a,' >> ',b,' = ',shiftr(a,b),shiftr(a,b) !since F2008, otherwise use ishft(a, -abs(b))
|
||||
write(*,fmt2) 'not : ', a,' ~ ',b,' = ',not(a),not(a)
|
||||
write(*,fmt2) 'rot : ', a,' r ',b,' = ',ishftc(a,-abs(b)),ishftc(a,-abs(b))
|
||||
|
||||
end subroutine bitwise
|
||||
|
||||
end program bits_rosetta
|
||||
8
Task/Bitwise-operations/Fortran/bitwise-operations-4.f
Normal file
8
Task/Bitwise-operations/Fortran/bitwise-operations-4.f
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
Input a= 14 b= 3
|
||||
AND : 00000000000000000000000000001110 & 00000000000000000000000000000011 = 00000000000000000000000000000010 2
|
||||
OR : 00000000000000000000000000001110 | 00000000000000000000000000000011 = 00000000000000000000000000001111 15
|
||||
XOR : 00000000000000000000000000001110 ^ 00000000000000000000000000000011 = 00000000000000000000000000001101 13
|
||||
LSH : 00000000000000000000000000001110 << 00000000000000000000000000000011 = 00000000000000000000000001110000 112
|
||||
RSH : 00000000000000000000000000001110 >> 00000000000000000000000000000011 = 00000000000000000000000000000001 1
|
||||
NOT : 00000000000000000000000000001110 ~ 00000000000000000000000000000011 = 11111111111111111111111111110001 -15
|
||||
ROT : 00000000000000000000000000001110 ~ 00000000000000000000000000000011 = 11000000000000000000000000000001 -1073741823
|
||||
Loading…
Add table
Add a link
Reference in a new issue