【发布时间】:2015-02-17 04:52:48
【问题描述】:
我正在进行一些修订,我遇到了一个问题,询问有符号整数和无符号整数中的 10011001 是什么。我知道无符号整数是 153,因为无符号整数中没有负数,但我是否正确地说 10011001 的有符号整数是 -153 还是我犯了一个错误?
【问题讨论】:
我正在进行一些修订,我遇到了一个问题,询问有符号整数和无符号整数中的 10011001 是什么。我知道无符号整数是 153,因为无符号整数中没有负数,但我是否正确地说 10011001 的有符号整数是 -153 还是我犯了一个错误?
【问题讨论】:
无符号数和有符号数的区别在于其中一位用于指示正数或负数。
所以在你的例子中你有 8 位。
如果我将 is 视为已签名,那么我有 7 位可以使用:2^7
如果我使用所有 8 位,那么我可以使用无符号位:2^8
这是演示答案的代码:
char *endptr;
char binary[11] = "10011001"; // need an extra char for the termination
char x = (char)strtol(binary, &endptr, 2);
unsigned char y = (unsigned char)strtol(binary, &endptr, 2);
printf("%s to signed char (1 byte): %i\n", binary, (short)x);
printf("%s to unsigned char (1 byte): %u\n", binary, y);
输出:
【讨论】: