c - Computet 是否将每个 ASCII 数字(二进制​​)转换为其等价数字(二进制​​)?

标签 c

computet 是否将每个 ASCII 数字(二进制​​)转换为其等价数字(二进制​​)? 假设如果输入 9,则其 ascii 值将为 00111001,并且我们知道 9 的二进制值为 1001,那么计算机如何将 9 的 ascii 值转换为二进制 9。

最佳答案

只有在进行算术运算时,位模式才代表数字计算机的数值。 (可以创建一台甚至不进行算术运算的数字计算机。)

将位模式描述为数字是为了方便人类。十六进制是最常见的形式,因为它很紧凑,以易于辨别的方式表示每个位,并且与存储宽度(例如 8 位的倍数)很好地对齐。

如何解释位模式取决于上下文。该上下文是由遵循约定和标准的程序驱动的,其中绝大多数超出了计算机硬件本身的范围。

一些位模式是程序。某些位可以标识操作,有些位可以标识寄存器,有些位可以标识指令位置,有些位可以标识数据位置,有些位可以标识数值。

如果您有一个位模式,您打算表示字符“9”,那么只要它流经内置或带有该解释的程序,它就会执行此操作。为了方便起见,我们将字符的位模式称为“字符代码”。

您可以编写一个程序,将字符“9”的位模式转换为数字值 9 的特定表示形式的位模式。下面是实现此目的的一种方法。

C 要求某些字符是可表示的,包括数字“0”到“9”,并且这些字符的字符代码在解释为数字时是连续且递增的。

数轴上两个数字相减可以测量它们之间的距离。所以,在C语言中,任何十进制数字字符的字符减去“0”的字符代码就是该数字与“0”之间的距离,即该数字的数值。

'9' - '0'

等于 9,因为 C 中对字符代码的位模式和整数的位模式有要求。

注意:二进制表示通常不太人性化。当十六进制会掩盖讨论的细节时使用它。

注意:C 不需要 ASCII。 ASCII 只是一种满足 C 要求的字符集和字符编码。有许多字符集是 ASCII 的超集并与其兼容。您可能正在使用其中之一。

关于c - Computet 是否将每个 ASCII 数字(二进制​​)转换为其等价数字(二进制​​)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55439189/

相关文章:

c - 使用 setjmp 和 longjmp

c - ARM-NONE-EABI 链接链中对 memcpy 的 undefined reference

python - 循环的 Python 范围的 C 等效项

c++ - 并发执行进程

c++ - 使用 XSendEvent 传递鼠标事件

c - 为什么 "unused attribute"为结构数组生成警告?

c - 我该如何处理这个 C 90 代码中的内存泄漏?

c - 管道 "bad address"管道打开

将包含整数的二进制文件转换为其 ascii 表示形式

c++ - 为什么生成的程序退出代码在调试时会发生变化?