计算机如何将二进制(例如 110011 (51))转换为相应的 ASCII 值 53('5') 和 49('1')?此外,计算机如何将53和49转回110011?
最佳答案
二进制到十进制的转换通常作为重复除法循环进行。如果我们从数字 N 开始,(N mod 10) 就是最后一位数字,然后我们将 N 除以 10 并重复得到其他数字。
- 我们从 N=51 开始
- 51 mod 10 是 1。最后一位是 1。
- 除以 10 以丢弃我们刚刚提取的数字(整数除法循环),得到 5。
- (这是步骤 2 的重复,但 N 不同)5 mod 10 是 5。下一个数字是 5。
- 5/10 是 0(四舍五入),所以我们就完成了。倒序排列的数字是 1 和 5。
- 我们将每个数字值加上 48,得到相应的 ASCII 十进制数字。
- 所以最终结果是“51”。
从字符串转换为内部表示形式更加容易。
- 累加器从 0 开始
- 取第一个字符(此处为“5”)。这是 ASCII 53。减去 48 得到 5。
- 将其添加到累加器中即可得到 0+5=5。
- 请注意,还有另一个数字。将累加器乘以 10 得到 50。
- 返回第 1 步
在下一次迭代中(即“1”=ASCII 49)再次减去 48:49-48=1。我们向累加器加 1,得到 51。没有更多字符,所以我们完成了,结果是 51。
计算机的内部表示形式是二进制的这一事实是偶然的。我们只需要能够进行加、减、乘,就可以在计算机内部将字符串转换为数字。
(当然,减法只是负数的加法,而乘法只是一系列加法,所以加法就是真正需要的。)
关于计算机中的二进制到十进制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10507945/