负数的计算

2019-07-21 04:21发布


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
5条回答
edmund1234
1楼-- · 2019-07-21 06:51
你为什么拿一个32位的变量当24位变量使?目的是什么?
如果说, 你想求绝对值, 应该写成
  if (data & (1<<31))   return -data;
  else return data;
xlong_06
2楼-- · 2019-07-21 09:55
这C语言里面还求补码干啥呀,直接加一个符号就能把负数弄成正数
liujie136997963
3楼-- · 2019-07-21 14:00
 精彩回答 2  元偷偷看……
edmund1234
4楼-- · 2019-07-21 16:14
liujie136997963 发表于 2019-3-15 08:59
因为我要存储24位的数据,难不成还有24位的变量?

要存储24位就在存储的时候只存头三个字节, 计算的时候用32位, 否则就是自找麻烦
edmund1234
5楼-- · 2019-07-21 22:12
liujie136997963 发表于 2019-3-15 08:59
因为我要存储24位的数据,难不成还有24位的变量?

如果说你非要用24位的abs, 就这样写

data &= 0xFFFFFF;
if (data & (1<<23)){
   data = ((data^0xFFFFFF)+1);
return data;
   

一周热门 更多>