dectobin.f
上传用户:szhypcb168
上传日期:2007-01-06
资源大小:2187k
文件大小:3k
源码类别:

语音压缩

开发平台:

Unix_Linux

  1. c==========================================================================
  2. c
  3. c ROUTINE
  4. c dectobin
  5. c
  6. c FUNCTION
  7. c This subroutine converts decimal numbers into a
  8. c binary output vector.
  9. c
  10. c SYNOPSIS
  11. c dectobin(vectorsize, decinteger, binaryvector)
  12. c
  13. c   formal 
  14. c
  15. c                       data    I/O
  16. c       name            type    type    function
  17. c       -------------------------------------------------------------------
  18. c vectorsize int i output vector length
  19. c decinteger int i decimal number  (< 2^32-1)
  20. c binaryvector int o vector containing binary number
  21. c
  22. c==========================================================================
  23. c
  24. c DESCRIPTION
  25. c
  26. c This subroutine is part of a set of subroutines which perform
  27. c a Generalized Hamming Code.  As you know, Hamming codes are perfect
  28. c codes and can only detect and correct one error.  We added an overall
  29. c  parity checkbit, which allows us to detect 2 errors.  When 2 errors 
  30. c are detected, (in subroutine dcodham.f) no correction attempt is
  31. c made.  This would most likely result in more errors.  Instead, a flag
  32. c is sent to the calling program notifying it of multiple errors so
  33. c that smoothing may be attempted.  The Hamming codes presently supported
  34. c by the routines are (63,57), (31,26), (15,11), and shortened variations
  35. c thereof.  It could be made even more general by making minor modifications
  36. c to the dectobin.f subroutine.  This routine at present will calculate 
  37. c a maximum of 6 bits.
  38. c
  39. c Hamming routines consist of the following files:
  40. c
  41. c matrixgen - generates the hmatrix and sydrometable.
  42. c dectobin - does a simple decimal to binary conversion.
  43. c encodeham - generates the code word and overall paritybit.
  44. c decodeham - recovers infobits, checks for errors, corrects 1
  45. c error, and sends out flag for smoothing.
  46. c
  47. c
  48. c This routine is used by encodeham to convert the packed decinteger
  49. c into the Hamming paritybits.
  50. c
  51. c**************************************************************************
  52. c
  53. c REFERENCES
  54. c
  55. c Lin and Costello : Error Control Coding
  56. c Berlekamp : Algebraic Coding Theory
  57. c
  58. c**************************************************************************
  59. c
  60. subroutine dectobin(vectorsize, decinteger, binaryvector)
  61. implicit undefined(a-z)
  62. c
  63. integer vectorsize, decinteger, binaryvector(vectorsize)
  64. integer i, temp1, twostable(6)
  65. c
  66. data twostable/1,2,4,8,16,32/
  67. c
  68. c Check to see if the decimal integer is larger than the routine can
  69. c convert.  This can be easily extended by adding to the twostable.
  70. c
  71. if (decinteger .gt. 63)
  72.      &     print *,' dectobin:  decinteger too large', decinteger
  73. temp1=vectorsize
  74. do 10 i=1,vectorsize
  75.    if(decinteger.ge.twostable(temp1))then
  76.       binaryvector(temp1)=1
  77.       decinteger=decinteger-twostable(temp1)
  78.    else
  79.       binaryvector(temp1)=0
  80.    end if
  81.    temp1=temp1-1
  82. 10 continue
  83. return
  84. end