Fortran Coder

查看: 1255|回复: 6
打印 上一主题 下一主题

[求助] 十进制数字转为二进制字符

[复制链接]

10

帖子

5

主题

0

精华

入门

F 币
60 元
贡献
30 点
跳转到指定楼层
楼主
发表于 2023-9-8 22:49:33 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
[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




分享到:  微信微信
收藏收藏 点赞点赞 点踩点踩

159

帖子

2

主题

1

精华

大师

Vim

F 币
961 元
贡献
469 点

规矩勋章

沙发
发表于 2023-9-9 09:23:45 | 只看该作者
[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的用法叫做内部文件读写

954

帖子

0

主题

0

精华

大师

F 币
184 元
贡献
75 点

规矩勋章元老勋章新人勋章水王勋章热心勋章

QQ
板凳
发表于 2023-9-9 09:37:07 | 只看该作者
本帖最后由 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

127

帖子

35

主题

1

精华

大师

F 币
1153 元
贡献
592 点
地板
发表于 2023-9-9 11:23:03 来自移动端 | 只看该作者
本帖最后由 weixing1531 于 2023-9-9 13:08 编辑

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

10

帖子

5

主题

0

精华

入门

F 币
60 元
贡献
30 点
5#
 楼主| 发表于 2023-9-9 18:47:56 | 只看该作者
Transpose 发表于 2023-9-9 09:23
[mw_shl_code=fortran,true]program main
  implicit none
  integer :: decimal_number

好的,学习了,感谢感谢

10

帖子

5

主题

0

精华

入门

F 币
60 元
贡献
30 点
6#
 楼主| 发表于 2023-9-9 19:00:53 | 只看该作者
vvt 发表于 2023-9-9 09:37
最简单的方法当然是像楼上那样用内部文件读写

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

好的,明白了

10

帖子

5

主题

0

精华

入门

F 币
60 元
贡献
30 点
7#
 楼主| 发表于 2023-9-9 19:03:40 | 只看该作者
weixing1531 发表于 2023-9-9 11:23
直接位运算从低位到高位逐个转换

好的,我学习下
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )

GMT+8, 2024-5-3 20:41

Powered by Tencent X3.4

© 2013-2024 Tencent

快速回复 返回顶部 返回列表