能否将每一个ascii数字(以二进制形式)转换为其数值等效形式(以二进制形式)?

时间:2019-03-31 08:42:57

标签: c

compute是否会将每个单独的ASCII数字(二进制​​)转换为其等效的数字(二进制​​)? 假设如果输入9,那么它的ascii值将是00111001,而我们知道9的二进制数是1001,那么计算机将如何将9的ascii值转换为9的二进制数。

2 个答案:

答案 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;
}

有点粗糙,不能以任何方式处理无效输入。