计算机怎么区分字节,计算机如何区分“ \ 0”(空字符)和“ unsigned int = 0”?...

没有。

字符串终止符是一个包含所有0位的字节。

unsigned int是两个或四个字节(取决于您的环境),每个字节包含所有0位。

两项存储在不同的地址。您编译的代码在前者的位置执行适合于字符串的操作,在后者的位置执行适合于无符号二进制数的操作。(除非您的代码中有错误或某些危险的聪明代码!)

但是所有这些字节在CPU上看起来都是相同的。内存中的数据(在大多数当前常见的指令集体系结构中)没有任何关联的类型。那是仅存在于源代码中的抽象,仅对编译器有意义。

编辑添加:作为示例:完全有可能,甚至很常见,对组成字符串的字节执行算术运算。如果您有一串8位ASCII字符,则可以通过添加或减去32(十进制)在字符串中的字母转换为大写和小写形式。或者,如果要转换为另一个字符代码,则可以将它们的值用作数组中的索引,该数组的元素提供其他代码中的等效位编码。

对于CPU来说,字符实际上是超短整数。(每位8位,而不是16位,32位或64位。)对我们来说,它们的值恰好与可读字符相关联,但CPU对此一无所知。它也对“空字节结束字符串”的“ C”约定一无所知(正如许多其他答案和评论所指出的那样,在编程环境中根本没有使用该约定) 。

可以肯定的是,x86 / x64中有一些指令经常与字符串一起使用-例如REP前缀-但是,如果它们能达到期望的结果,则也可以在整数数组上使用它们。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值