这肯定是重复的,但我无法找到以下问题的答案。
让我们考虑十进制整数14
。我们可以使用例如1110
来获得其二进制表示。 除以2 方法(%
表示模数操作数):
14 % 2 = 0
7 % 2 = 1
3 % 2 = 1
1 % 2 = 1
但计算机如何将十进制转换为二进制整数?
上述方法需要计算机执行算术,据我所知,因为算术是对二进制数进行的,所以我们似乎会回来处理同样的问题。
我认为任何其他算法方法都会遇到同样的问题。计算机如何将十进制转换为二进制整数?
更新:在与Code-Apprentice进行讨论后(请参阅他的answer下的评论),以下是两个感兴趣的问题的重新制定问题:
a)当用户在键盘上输入整数时,如何转换为二进制文件?
b)给定编程语言中的数学运算,比如说12 / 3
,运行程序时如何完成从十进制到二进制的转换,以便计算机可以执行算术?
答案 0 :(得分:0)
计算机将所有数据存储为二进制文件。它不会从十进制转换为二进制,因为二进制是它的本机语言。当计算机显示一个数字时,它将从二进制表示转换为任何基数,默认为十进制。
这里要理解的一个关键概念是计算机内部存储与显示器上的字符表示之间的区别。如果要将数字显示为二进制,可以在代码中编写算法,以执行手动执行的确切步骤。然后打印出算法计算出的字符1
和0
。
答案 1 :(得分:0)
的确,就像您在其中一个评论中提到的那样,如果编译器有一个小的查询表来将十进制整数与二进制整数相关联,则可以使用简单的二进制乘法和加法来完成。 查找表必须包含单个十进制数字和十进制十,一百,千等的二进制关联。 通过将二进制1乘以二进制10并添加二进制4,可以将小数14转换为二进制。 十进制149是二进制1乘以二进制100,然后加到二进制4乘以二进制10并在末尾添加二进制9。
答案 2 :(得分:0)
我们知道将字符映射为二进制形式的逻辑 ASCII 编码
例如
0 - 00110000(十进制表示48)
1 - 00110001(十进制 49)
2 - 00110010(十进制 50)
3 - 00110011(十进制 51)
4 - 00110100(十进制 52)
...等等
https://en.wikipedia.org/wiki/ASCII - 使用此链接获取所有 ascii 编码详细信息
当我在键盘上输入 say 14 时会发生什么??
在键盘上按下 1,然后按下 4
内部接线完成后,它发出 00110001 用于按键 1
和 00110100 在键盘上按下 4
由于计算机不知道 14,因此它发出 00110001 00110100,因为键盘供应商将其设计为基于 ASCII 约定
处理器不会对这个 ascii 格式进行算术运算,额外的工作很好,lol
他们像你提到的那样处理整数编码
14 = 1110
或者我们可以用零填充它
14 = 00001110
只有我们现在必须想办法进行这种转换
00110001 00110100 至 00001110
一个二进制到另一个二进制形式的处理器现在可以很容易地做到这一点