内存如何存储有符号和无符号字符

问题描述 投票:0回答:2

刚开始学习C,我有点困惑。

我有一些问题:

  1. 如果我有以下代码:
signed  char x = 56;
// ‭In the RAM, I will see 00111000‬ yes/no?

signed char z = -56;
// In the RAM, I will see 11001000 yes/no?

unsigned char y = 200;
// ‭In the RAM, I will see 11001000‬ yes/no?
  1. 我有以下代码:
if (z<0){
   printf("0 is bigger then z ");
}

编译后,汇编指令如何知道z是-56而不是200?(有特殊的ASM指令用于带符号和无符号?)。>

正如我在问题1中提到的,z和y的值为11001000,没有任何迹象表明它是带符号的还是无符号的。

很抱歉,如果我找不到正确的方式问我的问题,希望您理解我谢谢

刚刚开始学习C,我有点困惑。我有一些问题:如果我有以下代码:signed char x = 56; //‭在RAM中,我会看到00111000‬是/否?带符号的字符z = -56; ...

c assembly char unsigned signed
2个回答
0
投票

编译器将根据它是无符号还是有符号类型生成不同的指令。这就是告诉处理器处理它的方法。是的,有签名和未签名的单独说明。对于Intel处理器,根据宽度(char,short,int)也有单独的说明]


0
投票

数字以二进制存储。负数通常以二进制补码形式存储,但是C语言允许使用不同的表示形式。所以这个:

© www.soinside.com 2019 - 2024. All rights reserved.