compute是否会将每个单独的ASCII数字(二进制)转换为其等效的数字(二进制)? 假设如果输入9,那么它的ascii值将是00111001,而我们知道9的二进制数是1001,那么计算机将如何将9的ascii值转换为9的二进制数。
答案 0 :(得分:0)
仅当进行算术运算时,位模式才代表数字计算机的数值。 (有可能创建甚至不做算术的数字计算机。)
将位模式描述为数字是人类的便利。十六进制是最常见的形式,因为它很紧凑,以易于辨别的方式表示每个位,并且与存储宽度(例如8位的倍数)很好地对齐。
如何解释位模式取决于上下文。该上下文由遵循约定和标准的程序驱动,这些约定和标准绝大部分不在计算机硬件本身的范围内。
某些位模式是程序。某些位可以标识操作,某些寄存器,某些指令位置,某些数据位置以及仅某些数值。
如果您打算使用位模式来表示字符“ 9”,那么只要它流过内置或携带有该解释的程序,它就会执行该操作。为方便起见,我们将字符的位模式称为“字符代码”。
您可以编写一个程序,将字符“ 9”的位模式转换为数字值9的特定表示形式的位模式。
C要求某些字符是可表示的,包括数字“ 0”至“ 9”,并且这些字符的字符代码在解释为数字时必须连续且递增。
在数字线上减去两个数字是度量两个数字之间的距离。因此,在C语言中,从任何十进制数字字符的字符中减去字符代码“ 0”就是数字与数字“ 0”之间的距离。
'9' - '0'
等于9是因为C语言中对字符代码的位模式和整数的位模式的要求。
注意:通常,二进制表示形式并不十分友好。当十六进制会使讨论的细节模糊不清时,将使用它。
注意:C不需要ASCII。 ASCII只是一种字符集和满足C要求的字符编码。有许多字符集是ASCII的超集并与ASCII兼容。您可能正在使用其中之一。
答案 1 :(得分:-1)
尝试此示例程序,它显示了如何将ASCII输入转换为二进制整数并再次返回。
#include <stdio.h>
int main()
{
int myInteger;
printf("Enter an integer: ");
scanf("%d",&myInteger);
printf("Number = %d",myInteger);
return 0;
}
有点粗糙,不能以任何方式处理无效输入。