搜索
bottom↓
回复: 12

C语言除法运算问题

[复制链接]

出0入0汤圆

发表于 2019-5-22 16:48:13 | 显示全部楼层 |阅读模式
比如(-2)/2,在short int 中,-2是65534,如果对65534除以2,就跳到正数的区域了。,但实际的运算结果是-1,应该是65535。C语言在除法运算中,我们需要手动把负数转换成正数,计算完再转换回负数吗?

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入24汤圆

发表于 2019-5-22 16:51:30 | 显示全部楼层
short int 数据范围是 -32768~~32767 ,没有65534

出0入475汤圆

发表于 2019-5-22 16:51:51 来自手机 | 显示全部楼层
要是那样的话就太不智能了嘛,你想多了应该是,还不如用汇编:)

出0入0汤圆

 楼主| 发表于 2019-5-22 16:59:48 | 显示全部楼层
20061002838 发表于 2019-5-22 16:51
short int 数据范围是 -32768~~32767 ,没有65534

short int的-2和unsigned short int的65534在内存里应该是同一个值吧,把他们两个都去除以2,能得出不同的结果吗

出0入93汤圆

发表于 2019-5-22 17:07:03 | 显示全部楼层
皮尔斯 发表于 2019-5-22 16:59
short int的-2和unsigned short int的65534在内存里应该是同一个值吧,把他们两个都去除以2,能得出不同 ...

必须不同。这个问题您自己查一下反汇编就知道了,编译器怎么可能那么傻

出0入0汤圆

发表于 2019-5-22 17:08:15 来自手机 | 显示全部楼层
你如果是常数直接除,应该是按照int来算的所以不会有疑问,如果是变量,编译器根据变量类型来除的,结果当然是不同的

出0入0汤圆

 楼主| 发表于 2019-5-22 17:08:23 | 显示全部楼层
是这样啊,在编译器反汇编的时候就会解决这个问题吗

出0入0汤圆

 楼主| 发表于 2019-5-22 17:08:55 | 显示全部楼层
takashiki 发表于 2019-5-22 17:07
必须不同。这个问题您自己查一下反汇编就知道了,编译器怎么可能那么傻 ...

是这样啊,编译器在反汇编的时候就会解决这个问题吗

出0入0汤圆

发表于 2019-5-22 17:09:36 | 显示全部楼层
符号型计算,编译器自动处理。

出0入24汤圆

发表于 2019-5-22 17:09:55 | 显示全部楼层
皮尔斯 发表于 2019-5-22 16:59
short int的-2和unsigned short int的65534在内存里应该是同一个值吧,把他们两个都去除以2,能得出不同 ...

如果要得到一样的结果,那汇编指令何必设计成SDIV和UDIV两种,16位数扩展成32位何必要分成有符号扩展和无符号扩展

出0入0汤圆

 楼主| 发表于 2019-5-22 17:10:43 | 显示全部楼层
20061002838 发表于 2019-5-22 17:09
如果要得到一样的结果,那汇编指令何必设计成SDIV和UDIV两种,16位数扩展成32位何必要分成有符号扩展和无 ...

有道理

出0入0汤圆

发表于 2019-5-22 17:13:14 | 显示全部楼层
写几行代码测试一下,比发帖问快多了。

出0入0汤圆

 楼主| 发表于 2019-5-22 17:20:19 | 显示全部楼层
su33691 发表于 2019-5-22 17:13
写几行代码测试一下,比发帖问快多了。

我一开始是想运算的问题会不会跟硬件有关系,有的硬件会自动识别正负,有的硬件比较低级就不会。没想到这一步是编译器做的
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-27 02:13

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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