补码的运算问题1
已知四位最大的二进制补码是 0111 了 那我再加1得出的另一个四位二进制 是多少 ? 1000吗? 不就变成-8了吗? 谢谢大神指导 是的,会溢出 还有 xy都是二进制补码x= 1011 y=0101 在计算x*y的时候 x的十进制是-3 还是11 ? qpwoeiruyt 发表于 2020-5-1 23:20还有 xy都是二进制补码x= 1011 y=0101 在计算x*y的时候 x的十进制是-3 还是11 ?
-3,四位二进制补码只能表示 -8 ~ 7 之间的数,超过则溢出。 zltzlt 发表于 2020-5-1 16:12
是的,会溢出
还有 xy都是二进制补码x= 1011 y=0101 在计算x*y的时候 x的十进制是-3 还是11 ? qpwoeiruyt 发表于 2020-5-1 23:23
还有 xy都是二进制补码x= 1011 y=0101 在计算x*y的时候 x的十进制是-3 还是11 ?
-3,四位二进制补码只能表示 -8 ~ 7 之间的数,超过则溢出。 zltzlt 发表于 2020-5-1 16:23
-3,四位二进制补码只能表示 -8 ~ 7 之间的数,超过则溢出。
那 x*y的时候 我是直接用补码相乘还是先还原到十进制再算? qpwoeiruyt 发表于 2020-5-1 23:29
那 x*y的时候 我是直接用补码相乘还是先还原到十进制再算?
用补码相乘,多余的部分不要 zltzlt 发表于 2020-5-1 16:42
用补码相乘,多余的部分不要
补码相乘得出 110111 是我计算错了吗? qpwoeiruyt 发表于 2020-5-1 23:23
还有 xy都是二进制补码x= 1011 y=0101 在计算x*y的时候 x的十进制是-3 还是11 ?
x 是十进制的 -5 吧?
怎么是 -3 ? 本帖最后由 qpwoeiruyt 于 2020-5-1 18:43 编辑
ok 人造人 发表于 2020-5-1 18:16
x 是十进制的 -5 吧?
怎么是 -3 ?
是的 还有一道题是这样的
int main(){
int8_ti=0;// 8字节整形符号
int32_t a=0;//32字节整形符号
while(i<127){ // 2^7-1
a +=i;
i+=1;
}
printf("a %d",a);
return 0;
}
问这个代码想执行什么,还有 当执行的时候 ,他没有停下 说明原因并修改上面的代码 qpwoeiruyt 发表于 2020-5-2 01:59
是的 还有一道题是这样的
int main(){
这个程序输出
a 8001 $ ./main.exe
a 8001$ 人造人 发表于 2020-5-2 02:48
那我还是没弄明白这个程序究竟想做什么 就纯粹想输出a吗? qpwoeiruyt 发表于 2020-5-2 15:13
那我还是没弄明白这个程序究竟想做什么 就纯粹想输出a吗?
不知道,这个题目哪来的?这个题目的作者都说不清楚这个程序要干什么,我怎么猜得到
人造人 发表于 2020-5-2 08:20
不知道,这个题目哪来的?这个题目的作者都说不清楚这个程序要干什么,我怎么猜得到
他一开始就说
1)x是一个最大的四字节二进制的数的补码 求x是多少 且写出他的十进制
2) 往x里加1 同样要得到一个四字节的数,这个数是多少 且写出他的十进制
3) 就突然出现这些代码了 {:5_99:} qpwoeiruyt 发表于 2020-5-2 15:30
他一开始就说
1)x是一个最大的四字节二进制的数的补码 求x是多少 且写出他的十进制
2) 往x里加1 同 ...
他想表达的是这样?
#include<stdio.h>
int main(){
int8_ti=0;// 8字节整形符号
int32_t a=0;//32字节整形符号
while(i<=127){ // 2^7-1
a +=i;
i+=1;
}
printf("a %d",a);
return 0;
}
或者这样?
#include<stdio.h>
int main(){
int8_ti=0;// 8字节整形符号
int32_t a=0;//32字节整形符号
while(i<128){ // 2^7-1
a +=i;
i+=1;
}
printf("a %d",a);
return 0;
}
页:
[1]