我正在进行一些修改,我遇到了一个问题,询问10011001有符号整数和无符号。我知道无符号整数是153,因为无符号整数没有负数,但我是否正确地说10011001的有符号整数是-153还是我犯了错误?
答案 0 :(得分:1)
无符号和有符号数之间的差异是该位之一用于表示正数或负数。
所以在你的例子中你有8位。
如果我视为签名,那么我有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);
输出: