bfjc 发表于 2023-9-8 22:49:33

十进制数字转为二进制字符

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:45

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:07

本帖最后由 vvt 于 2023-9-9 09:38 编辑

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

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

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

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:03

本帖最后由 weixing1531 于 2023-9-9 13:08 编辑

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

bfjc 发表于 2023-9-9 18:47:56

Transpose 发表于 2023-9-9 09:23
program main
implicit none
integer :: decimal_number


好的,学习了,感谢感谢

bfjc 发表于 2023-9-9 19:00:53

vvt 发表于 2023-9-9 09:37
最简单的方法当然是像楼上那样用内部文件读写

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

好的,明白了

bfjc 发表于 2023-9-9 19:03:40

weixing1531 发表于 2023-9-9 11:23
直接位运算从低位到高位逐个转换

好的,我学习下
页: [1]
查看完整版本: 十进制数字转为二进制字符