Binary 计算机中的二进制到十进制

Binary 计算机中的二进制到十进制,binary,decimal,computer-architecture,Binary,Decimal,Computer Architecture,计算机如何将二进制(比如110011 51)转换为相应的ASCII值(53'5'和49'1'?此外,计算机如何将53和49变回110011?这两种情况都不会改变。53在记忆中永远是53 当需要显示时,会调用一个函数,该函数知道当它看到数字53时,它会生成我们眼睛看到的5的图形。或者在内存中,它可以将数字53转换为数字53和51,最终一些程序将显示为字符5和3 53总是110101。存储单元是一个位序列,保存十进制53作为位001101011 同样,有些函数可以看到这些位,并可以在屏幕上生成字符5

计算机如何将二进制(比如110011 51)转换为相应的ASCII值(53'5'和49'1'?此外,计算机如何将53和49变回110011?

这两种情况都不会改变。53在记忆中永远是53

当需要显示时,会调用一个函数,该函数知道当它看到数字53时,它会生成我们眼睛看到的5的图形。或者在内存中,它可以将数字53转换为数字53和51,最终一些程序将显示为字符5和3

53总是110101。存储单元是一个位序列,保存十进制53作为位001101011

同样,有些函数可以看到这些位,并可以在屏幕上生成字符5和字符3


但在计算机内部,它总是数字和二进制的。

这两种方式都不会转换。53在记忆中永远是53

当需要显示时,会调用一个函数,该函数知道当它看到数字53时,它会生成我们眼睛看到的5的图形。或者在内存中,它可以将数字53转换为数字53和51,最终一些程序将显示为字符5和3

53总是110101。存储单元是一个位序列,保存十进制53作为位001101011

同样,有些函数可以看到这些位,并可以在屏幕上生成字符5和字符3


但是在计算机内部,它总是数字,总是二进制的。

试着为此编写一个计算机程序。它通常是在软件中完成的,尽管有些处理器有特殊用途的十进制指令。只要假装你的工作就是看上面有二进制整数的纸片,然后制作上面有Unicode代码点的纸片,你很快就会有基本的大纲。

试着为此编写一个计算机程序。它通常是在软件中完成的,尽管有些处理器有特殊用途的十进制指令。只要假设你的工作是查看带有二进制整数的纸片,并生成带有Unicode代码点的纸片,你很快就能得到基本轮廓。

二进制到十进制的转换通常作为重复的除法循环工作。如果我们从一个数字N开始,N mod 10是最后一个数字,然后我们继续将N除以10,然后重复得到其他数字

我们从N=51开始 51模10为1。最后一位数字是1。 除以10以丢弃我们刚才提取的整数除法舍入的数字,得到5。 这是步骤2的重复,不同的n5模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

计算机的内部表示是二进制的这一事实是偶然的。我们只需要能够加、减、乘就可以在计算机中将字符串转换成数字


当然,减法只是负数的加法,乘法只是一系列加法,所以真正需要的就是加法。

二进制到十进制的转换通常作为重复除法循环工作。如果我们从一个数字N开始,N mod 10是最后一个数字,然后我们继续将N除以10,然后重复得到其他数字

我们从N=51开始 51模10为1。最后一位数字是1。 除以10以丢弃我们刚才提取的整数除法舍入的数字,得到5。 这是步骤2的重复,不同的n5模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

事实上,计算机的内部代表 二元性是偶然的。我们只需要能够加、减、乘就可以在计算机中将字符串转换成数字


当然,减法只是负数的加法,乘法只是一系列加法,所以加法才是真正需要的。

要将二进制转换为ASCII:

1将你的数字除以10十进制1010二进制,然后计算余数 2与余数一起,为“0”添加48个ASCII值。这是最后一位数字。 3如果商为0,则停止 4如果商大于0,则使用商从步骤1再次开始

例如,使用基数10 1010将51 110011转换为ASCII:

110011 / 1010  = 0101 (5 decimal) remainder 0001


0001 (the remainder from above) + 110000 ('0') = 110001 (49 decimal or '1' in ASCII)

0101 (the quotient from above) / 1010 = 0 remainder 0101
0101 (the remainder) + 110000 ('0') = 110101 (53 decimal or '5' in ASCII)

要将二进制转换为ASCII,请执行以下操作:

1将你的数字除以10十进制1010二进制,然后计算余数 2与余数一起,为“0”添加48个ASCII值。这是最后一位数字。 3如果商为0,则停止 4如果商大于0,则使用商从步骤1再次开始

例如,使用基数10 1010将51 110011转换为ASCII:

110011 / 1010  = 0101 (5 decimal) remainder 0001


0001 (the remainder from above) + 110000 ('0') = 110001 (49 decimal or '1' in ASCII)

0101 (the quotient from above) / 1010 = 0 remainder 0101
0101 (the remainder) + 110000 ('0') = 110101 (53 decimal or '5' in ASCII)


那么,你是说计算机不使用51进行计算,而是有几个不同的数字,53和49,用于计算?Um no。例如,fprintf/String.format在内存中获取二进制整数,并在内存中生成字符串。不涉及“图形”。但它如何使用二进制整数在内存中生成字符串呢?这很公平。但是,如果有人在看它,那么最终会有一些图形将像素放在屏幕上,我们看到的是5和3。当然,但我不认为这是《熊》OP的要求。在绘制字形之前,内存中肯定有“5”和“3”字符。所以,你是说计算机不使用51进行计算,而是有几个不同的数字,53和49,用于计算?嗯,不。例如,fprintf/String.format在内存中获取二进制整数,并在内存中生成字符串。不涉及“图形”。但它如何使用二进制整数在内存中生成字符串呢?这很公平。但是,如果有人在看它,那么最终会有一些图形将像素放在屏幕上,我们看到的是5和3。当然,但我不认为这是《熊》OP的要求。在绘制字形之前很久,内存中肯定有“5”和“3”字符。问题是,我不知道如何绘制。这就是我问的原因。首先你需要单位数字。这是您的编号mod 10,索引到字符数组0-9中。然后你需要得到10的数字。然后是100的数字。。。想想把一个数字分解成数字的代数。或者下载glibc的开源软件并阅读itoa的源代码。问题是,我不知道如何下载。这就是我问的原因。首先你需要单位数字。这是您的编号mod 10,索引到字符数组0-9中。然后你需要得到10的数字。然后是100的数字。。。想想把一个数字分解成数字的代数。或者下载glibc的开放源码并阅读itoa的源代码。谢谢,这就是我要找的。我想你需要在答案的第一部分修正一些模与除法。我知道你的意思,但你并没有真正遵循步骤中的逻辑,而是交替使用模和除法。谢谢你,这就是我要找的。我想你需要在答案的第一部分修正一些模和除法。我知道你的意思,但你并没有真正遵循步骤中的逻辑,而是交替使用模和除。