永发信息网

为什么-1对256取模,得到255

答案:4  悬赏:20  手机版
解决时间 2021-01-24 23:19
  • 提问者网友:玫瑰园
  • 2021-01-24 13:42
为什么-1对256取模,得到255
最佳答案
  • 五星知识达人网友:行雁书
  • 2021-01-24 14:03
-1 % 256 还是得 -1,只不过结果是8位的 -1扩展而来。
如果非要说结果是255,那么只能解释为-1先转换为了“无符号”数,然后再取模256。追问-1转为无符号怎么转?谢谢还有为什么结果是八位的?如果结果为-1的话追答按目前绝大多数计算机所采用的“补码”运算规则,有符号十进制数的“-1”,32位数据十六进制表示为“FFFFFFFFh”,在二进制表示为“1111 1111 1111 1111 1111 1111 1111 1111”,而以无符号十进制表示,则是4294967295,模上256,结果就是8位数FF(16进制),11111111(二进制),255(十进制)。如果是无符号数,就到此为止了,而有符号数则还需将该8位数扩展至32位,得到FFFFFFFF(16进制),十进制就是-1。
全部回答
  • 1楼网友:时间的尘埃
  • 2021-01-24 16:17
计算机只能识别二进制,8位的-1在计算中表示为
  • 2楼网友:迟山
  • 2021-01-24 15:28
觉得john_lee1969,说得比较在理。至于求模后的余数,在c++ primer中也是这么说的,但是为什么是求模后的余数却没说清楚,感觉没道理。而把-1的补码赋值给无符号类型的对象时,-1是补码并没有改变,只是类型转换成了无符号类型,所以它的值变成了255。
  • 3楼网友:舊物识亽
  • 2021-01-24 14:46
(-1+256) % 256.
负数比较特殊,
需要加上被除数的整数倍,然后算出来大于0的数,然后再模运算
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯