Fortran Coder

标题: 十进制数字转为二进制字符 [打印本页]

作者: bfjc    时间: 2023-9-8 22:49
标题: 十进制数字转为二进制字符
[Fortran] 纯文本查看 复制代码
program decimal_to_binary
  implicit none
  integer :: decimal_number
  character(len=32) :: binary_string
  integer :: i, remainder

  ! 输入十进制数字
  write(*, *) "请输入一个十进制数字:"                                           !这里我输入了3
  read(*, *) decimal_number

  ! 将十进制数字转换为二进制字符串
  binary_string = ""
  do i = 31, 0, -1
    remainder = mod(decimal_number, 2)                                      !remainder的值为1
    binary_string = binary_string // char(remainder + 48)                !这一行   binary_string   应该为“1”,但是实际为“”
    decimal_number = decimal_number / 2
  end do

  ! 输出二进制字符串
  write(*, *) "对应的二进制字符串为:", binary_string

end program decimal_to_binary





作者: Transpose    时间: 2023-9-9 09:23
[Fortran] 纯文本查看 复制代码
program main
  implicit none
  integer :: decimal_number
  character(len=32) :: binary_string
  read(*,*)decimal_number
  write(binary_string,"(b32.32)")decimal_number
  write(*,*)binary_string
end program main

空位全都补0的写法,write的用法叫做内部文件读写
作者: vvt    时间: 2023-9-9 09:37
本帖最后由 vvt 于 2023-9-9 09:38 编辑

最简单的方法当然是像楼上那样用内部文件读写

做为编程练习,你的代码也是可以的,但有一些问题,如下(注意你的代码不适合负数):

关于为什么是 "" 而不是 1,你可以看本站文章:
http://string.w.fcode.cn/

[Fortran] 纯文本查看 复制代码
program decimal_to_binary
  implicit none
  integer :: decimal_number
  character(len=32) :: binary_string
  integer :: i, remainder

  write(*, *) "请输入一个十进制数字:"
  read(*, *) decimal_number
  binary_string = ""
  do i = 31, 0, -1
    remainder = mod(decimal_number, 2)
    binary_string = char(remainder + 48)//binary_string  !//放前面
    decimal_number = decimal_number / 2
    if(decimal_number<1)exit !//需要中止循环条件
  end do
  write(*, *) "对应的二进制字符串为:", binary_string
end program decimal_to_binary


作者: weixing1531    时间: 2023-9-9 11:23
本帖最后由 weixing1531 于 2023-9-9 13:08 编辑

直接位运算从低位到高位逐个转换


作者: bfjc    时间: 2023-9-9 18:47
Transpose 发表于 2023-9-9 09:23
[mw_shl_code=fortran,true]program main
  implicit none
  integer :: decimal_number

好的,学习了,感谢感谢
作者: bfjc    时间: 2023-9-9 19:00
vvt 发表于 2023-9-9 09:37
最简单的方法当然是像楼上那样用内部文件读写

做为编程练习,你的代码也是可以的,但有一些问题,如下(注 ...

好的,明白了
作者: bfjc    时间: 2023-9-9 19:03
weixing1531 发表于 2023-9-9 11:23
直接位运算从低位到高位逐个转换

好的,我学习下




欢迎光临 Fortran Coder (http://bbs.fcode.cn/) Powered by Discuz! X3.2