计算机硬件是如何将二进制数以字符形式输出的??

FengPrince 2011-11-28 12:47:18
比如,64在内存中的存储形式为0100 0000,输出时先输出字符‘6’然后输出字符‘4’,我想知道的是如何从0100 0000得到‘6’ASCII码为0110110和‘4’ASCII码为0110100,计算机硬件用的什么电路算法??
PS:我知道计算机硬件是如何将字符‘64’转换成二进制数0100 0000的,但反过来输出就想不明白了。求高手指点,感激不尽。。。。
...全文
177 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
nuaazdh 2011-11-28
  • 打赏
  • 举报
回复
0100 0000(十进制的64)在运算时仍然保持不变的,只有在输出显示时才转换。转换方式基本上是这样:这个数设为x,x%10得到个位y(二进制数表示),y+'0'得到y对应的ASCII码,x/10取整得到十位(二进数表示),再加上0的ASCII码,就得到用于显示的十位,依此类推。。。
bdmh 2011-11-28
  • 打赏
  • 举报
回复
本质都是0和1,各种进制只不过是一种表现形式而已
FengPrince 2011-11-28
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 mingliang1212 的回复:]

楼上正解。不是直接通过电路,而是通过人写的算法。
[/Quote]
汇编都几乎忘掉了,确实输出一个多位整数汇编一条指令做不到,需要人工编程。
难道所有的CPU都是类似Intel这样的方式不直接通过电路一下子得到结果?
FengPrince 2011-11-28
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 nuaazdh 的回复:]

0100 0000(十进制的64)在运算时仍然保持不变的,只有在输出显示时才转换。转换方式基本上是这样:这个数设为x,x%10得到个位y(二进制数表示),y+'0'得到y对应的ASCII码,x/10取整得到十位(二进数表示),再加上0的ASCII码,就得到用于显示的十位,依此类推。。。
[/Quote]
我知道在运算时是不变的。一开始我也想到二、十进制转换的常规算法,我觉得除10这样的算法效率好低啊,既然计算机可以将十进制的数字字符通过硬件直接转化成二进制,也可以通过硬件将二进制直接转化成十进制的数字字符形式,不是通过除10而是更巧妙的算法。或许,是我想多了吧。。。
iamnobody 2011-11-28
  • 打赏
  • 举报
回复
楼上正解。不是直接通过电路,而是通过人写的算法。

64,645

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧