请教?关于负数取模问题!

Higuain_yufeng 2014-07-17 03:48:08
正在自习c++primer,里面有一处看不懂,就是以下这段话: 当我们赋给无符号类型一个超出它表示范围的值时,结果是初始值对无符号类型表示数值总数取模后的余数。例如,8比特大小的unsigned char可以表示0至255区间内的值,如果我们赋了一个区间以外的值,则实际的结果是对该值对256取模后所得的余数。因此,把-1赋给8比特大小的unsigned char所得的结果是255. 然后这段是解释unsigned char c = -1,c的值为255的,就是-1%256=255。
...全文
626 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
会飞的三角裤 2015-10-09
  • 打赏
  • 举报
回复
我也想问一下为什么是对256取模同余呢
coolxcool 2015-10-09
  • 打赏
  • 举报
回复
引用 1 楼 zhao4zhong1 的回复:
王八的屁股——龟腚(规定)!
请问为什么是对256取模同余呢
沙尘暗影 2014-07-18
  • 打赏
  • 举报
回复
引用 5 楼 luotuo44 的回复:
引用 2 楼 Higuain_yufeng 的回复:
[quote=引用 1 楼 zhao4zhong1 的回复:] 王八的屁股——龟腚(规定)!
可是看了这段话,我还是不明白-1%256怎么等于255的
-1 = -1 * 256 + 255。所以-1%256 等于255 这个是数论里面的知识[/quote]数论一般只说模某数同余
mrlgy 2014-07-18
  • 打赏
  • 举报
回复
计算机只能识别二进制,8字节的-1在计算中表示为11111111B(即-1的补码),把-1赋给c就相当于把11111111B赋给c,所以c=11111111B;又c是无符号的,所以显示出来就是255,(若c是符号的,就是-1)。然后我就觉得“当我们赋给无符号类型一个超出它表示范围的值时,结果是初始值对无符号类型表示数值总数取模后的余数。”这句话是对前面的抽象解释。
luotuo44 2014-07-18
  • 打赏
  • 举报
回复
引用 6 楼 alanmaths 的回复:
引用 5 楼 luotuo44 的回复:
[quote=引用 2 楼 Higuain_yufeng 的回复:] [quote=引用 1 楼 zhao4zhong1 的回复:] 王八的屁股——龟腚(规定)!
可是看了这段话,我还是不明白-1%256怎么等于255的
-1 = -1 * 256 + 255。所以-1%256 等于255 这个是数论里面的知识[/quote]数论一般只说模某数同余[/quote] 是的。-1和255模256同余。原因是-1 = -1*256 + 255
mujiok2003 2014-07-18
  • 打赏
  • 举报
回复
自己算: -1 = -1 * 156 + 255, 所以-1%256是255 实际上,编译器没有取模运算

  unsigned char uc = -1;
01212EB6  mov         byte ptr [uc],0FFh  
luotuo44 2014-07-17
  • 打赏
  • 举报
回复
引用 2 楼 Higuain_yufeng 的回复:
引用 1 楼 zhao4zhong1 的回复:
王八的屁股——龟腚(规定)!
可是看了这段话,我还是不明白-1%256怎么等于255的
-1 = -1 * 256 + 255。所以-1%256 等于255 这个是数论里面的知识
没事人 2014-07-17
  • 打赏
  • 举报
回复
一个整数对一个负数取模呢
赵4老师 2014-07-17
  • 打赏
  • 举报
回复
一个负数B对一个正数A取模, 在B上加A,直到B变成正数,然后再对A取模。
Higuain_yufeng 2014-07-17
  • 打赏
  • 举报
回复
引用 1 楼 zhao4zhong1 的回复:
王八的屁股——龟腚(规定)!
可是看了这段话,我还是不明白-1%256怎么等于255的
赵4老师 2014-07-17
  • 打赏
  • 举报
回复
王八的屁股——龟腚(规定)!

64,642

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧