qpwoeiruyt 发表于 2020-5-1 23:10:29

补码的运算问题1

已知四位最大的二进制补码是 0111 了 那我再加1得出的另一个四位二进制 是多少 ? 1000吗? 不就变成-8了吗? 谢谢大神指导

zltzlt 发表于 2020-5-1 23:12:02

是的,会溢出

qpwoeiruyt 发表于 2020-5-1 23:20:38

还有 xy都是二进制补码x= 1011   y=0101 在计算x*y的时候   x的十进制是-3 还是11 ?

zltzlt 发表于 2020-5-1 23:22:02

qpwoeiruyt 发表于 2020-5-1 23:20
还有 xy都是二进制补码x= 1011   y=0101 在计算x*y的时候   x的十进制是-3 还是11 ?

-3,四位二进制补码只能表示 -8 ~ 7 之间的数,超过则溢出。

qpwoeiruyt 发表于 2020-5-1 23:23:25

zltzlt 发表于 2020-5-1 16:12
是的,会溢出

还有 xy都是二进制补码x= 1011   y=0101 在计算x*y的时候   x的十进制是-3 还是11 ?

zltzlt 发表于 2020-5-1 23:23:42

qpwoeiruyt 发表于 2020-5-1 23:23
还有 xy都是二进制补码x= 1011   y=0101 在计算x*y的时候   x的十进制是-3 还是11 ?

-3,四位二进制补码只能表示 -8 ~ 7 之间的数,超过则溢出。

qpwoeiruyt 发表于 2020-5-1 23:29:33

zltzlt 发表于 2020-5-1 16:23
-3,四位二进制补码只能表示 -8 ~ 7 之间的数,超过则溢出。

那 x*y的时候 我是直接用补码相乘还是先还原到十进制再算?

zltzlt 发表于 2020-5-1 23:42:45

qpwoeiruyt 发表于 2020-5-1 23:29
那 x*y的时候 我是直接用补码相乘还是先还原到十进制再算?

用补码相乘,多余的部分不要

qpwoeiruyt 发表于 2020-5-2 00:00:21

zltzlt 发表于 2020-5-1 16:42
用补码相乘,多余的部分不要

补码相乘得出 110111 是我计算错了吗?

人造人 发表于 2020-5-2 01:16:02

qpwoeiruyt 发表于 2020-5-1 23:23
还有 xy都是二进制补码x= 1011   y=0101 在计算x*y的时候   x的十进制是-3 还是11 ?

x 是十进制的 -5 吧?
怎么是 -3 ?

qpwoeiruyt 发表于 2020-5-2 01:40:18

本帖最后由 qpwoeiruyt 于 2020-5-1 18:43 编辑

ok

qpwoeiruyt 发表于 2020-5-2 01:59:50

人造人 发表于 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;
}
问这个代码想执行什么,还有 当执行的时候 ,他没有停下 说明原因并修改上面的代码

人造人 发表于 2020-5-2 09:47:45

qpwoeiruyt 发表于 2020-5-2 01:59
是的 还有一道题是这样的

int main(){


这个程序输出
a 8001

人造人 发表于 2020-5-2 09:48:39

$ ./main.exe
a 8001$

qpwoeiruyt 发表于 2020-5-2 15:13:39

人造人 发表于 2020-5-2 02:48


那我还是没弄明白这个程序究竟想做什么 就纯粹想输出a吗?

人造人 发表于 2020-5-2 15:20:20

qpwoeiruyt 发表于 2020-5-2 15:13
那我还是没弄明白这个程序究竟想做什么 就纯粹想输出a吗?

不知道,这个题目哪来的?这个题目的作者都说不清楚这个程序要干什么,我怎么猜得到

qpwoeiruyt 发表于 2020-5-2 15:30:21

人造人 发表于 2020-5-2 08:20
不知道,这个题目哪来的?这个题目的作者都说不清楚这个程序要干什么,我怎么猜得到

他一开始就说
1)x是一个最大的四字节二进制的数的补码   求x是多少 且写出他的十进制
2) 往x里加1 同样要得到一个四字节的数,这个数是多少 且写出他的十进制
3) 就突然出现这些代码了 {:5_99:}

人造人 发表于 2020-5-2 18:50:19

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]
查看完整版本: 补码的运算问题1