鱼C论坛

 找回密码
 立即注册
查看: 665|回复: 17

补码的运算问题1

[复制链接]
发表于 2020-5-1 23:10:29 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
已知四位最大的二进制补码是 0111 了 那我再加1得出的另一个四位二进制 是多少 ? 1000吗? 不就变成-8了吗? 谢谢大神指导
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-5-1 23:12:02 | 显示全部楼层
是的,会溢出
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-1 23:20:38 | 显示全部楼层
还有 xy都是二进制补码  x= 1011   y=0101 在计算x*y的时候   x的十进制是-3 还是11 ?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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 之间的数,超过则溢出。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-1 23:23:25 | 显示全部楼层

还有 xy都是二进制补码  x= 1011   y=0101 在计算x*y的时候   x的十进制是-3 还是11 ?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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 之间的数,超过则溢出。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

那 x*y的时候 我是直接用补码相乘还是先还原到十进制再算?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

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

评分

参与人数 1荣誉 +1 鱼币 +1 收起 理由
qpwoeiruyt + 1 + 1 鱼C有你更精彩^_^

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-2 00:00:21 | 显示全部楼层
zltzlt 发表于 2020-5-1 16:42
用补码相乘,多余的部分不要

补码相乘得出 110111 是我计算错了吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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 ?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2020-5-2 01:40:18 | 显示全部楼层
本帖最后由 qpwoeiruyt 于 2020-5-1 18:43 编辑

ok
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-5-2 01:59:50 | 显示全部楼层
人造人 发表于 2020-5-1 18:16
x 是十进制的 -5 吧?
怎么是 -3 ?

是的 还有一道题是这样的

int main(){
int8_t  i=0;  // 8字节整形符号
int32_t a=0;  //32字节整形符号
while(i<127){   // 2^7-1
   a +=i;
   i+=1;
}
printf("a %d",a);
return 0;
}
问这个代码想执行什么,还有 当执行的时候 ,他没有停下 说明原因并修改上面的代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-2 09:47:45 | 显示全部楼层
qpwoeiruyt 发表于 2020-5-2 01:59
是的 还有一道题是这样的

int main(){

这个程序输出
a 8001
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-2 09:48:39 | 显示全部楼层
$ ./main.exe
a 8001$ 
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-2 15:13:39 | 显示全部楼层

那我还是没弄明白这个程序究竟想做什么 就纯粹想输出a吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

不知道,这个题目哪来的?这个题目的作者都说不清楚这个程序要干什么,我怎么猜得到
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-2 15:30:21 | 显示全部楼层
人造人 发表于 2020-5-2 08:20
不知道,这个题目哪来的?这个题目的作者都说不清楚这个程序要干什么,我怎么猜得到

他一开始就说
1)x是一个最大的四字节二进制的数的补码   求x是多少 且写出他的十进制
2) 往x里加1 同样要得到一个四字节的数,这个数是多少 且写出他的十进制
3) 就突然出现这些代码了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-2 18:50:19 | 显示全部楼层
qpwoeiruyt 发表于 2020-5-2 15:30
他一开始就说
1)x是一个最大的四字节二进制的数的补码   求x是多少 且写出他的十进制
2) 往x里加1 同 ...

他想表达的是这样?
#include<stdio.h>
int main(){
int8_t  i=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_t  i=0;  // 8字节整形符号
int32_t a=0;  //32字节整形符号
while(i<128){   // 2^7-1 
   a +=i;
   i+=1;
}
printf("a %d",a);
return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-14 17:59

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表