Binary 有符号和无符号整数
我在复习一些内容时遇到了一个问题,问10011001在有符号整数和无符号整数中是什么。我知道无符号整数是153,因为无符号整数中没有负数,但我说10011001的有符号整数是-153是正确的,还是我犯了错误?无符号数和有符号数之间的区别在于,其中一位用于表示正数或负数 在你的例子中,你有8位 如果我将is视为有符号的,那么我有7位要处理:2^7Binary 有符号和无符号整数,binary,unsigned,signed,Binary,Unsigned,Signed,我在复习一些内容时遇到了一个问题,问10011001在有符号整数和无符号整数中是什么。我知道无符号整数是153,因为无符号整数中没有负数,但我说10011001的有符号整数是-153是正确的,还是我犯了错误?无符号数和有符号数之间的区别在于,其中一位用于表示正数或负数 在你的例子中,你有8位 如果我将is视为有符号的,那么我有7位要处理:2^7 000 0000=0 111 1111=127 001 1001=25,则最高有效位导致进行以下计算 (25-128)=-103 如果我使用全部8位
- 000 0000=0
- 111 1111=127
- 001 1001=25,则最高有效位导致进行以下计算
- (25-128)=-103
- 0000=0
- 1111111=255
- 1001001=153
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);
输出:
那么答案是-25?我的计算不正确。我已经更新了我的答案。