十进制数字转为二进制字符
program decimal_to_binaryimplicit 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
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: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 13:08 编辑
直接位运算从低位到高位逐个转换
Transpose 发表于 2023-9-9 09:23
program main
implicit none
integer :: decimal_number
好的,学习了,感谢感谢 vvt 发表于 2023-9-9 09:37
最简单的方法当然是像楼上那样用内部文件读写
做为编程练习,你的代码也是可以的,但有一些问题,如下(注 ...
好的,明白了 weixing1531 发表于 2023-9-9 11:23
直接位运算从低位到高位逐个转换
好的,我学习下
页:
[1]