原码,补码,反码
2015-07-18 21:31
776 查看
原码,补码,反码
bit BYTE WORD DWORD1 BYTE = 8 bit
1 WORD = 2 BYTE
1 DWORD = 2 WORD
原码
定义:将最高位做为符号位(0代表正,1代表负),其余各位代表数值本身的绝对值.
反码
定义:一个数如果值为正,那么反码和原码相同;一个数如果为负,那么符号位为1,其他各位与原码相反
补码
定义:正数:原码,反码补码都相同;负数:最高位为1,其余各位原码取反,最后对整个数 + 1
-7的表达方式(正数的原码,反码,补码都一样,所以下面不予讨论)
原码
1000 0000 0000 0000 0000 0000 0000 0111
反码
1111 1111 1111 1111 1111 1111 1111 1000
补码
1111 1111 1111 1111 1111 1111 1111 1001
代码验证
-7的十六进制输出,也就是补码输出
printf("%x\n", 7);
7
-7的十六进制输出,也就是补码输出
printf("%x\n", -7);
fffffff9
1111 | 1111 | 1111 | 1111 | 1111 | 1111 | 1111 | 1001 |
---|---|---|---|---|---|---|---|
f | f | f | f | f | f | f | 9 |
整数溢出
计算一个整数的时候超过整数能够容纳的最大单位后,整数会溢出,溢出的结果是高位舍弃(包括最大值溢出和最小值溢出)。当一个小的整数赋值给大的整数,符号位不会丢失,会继承,(例:把int类型的-7赋值给long long类型的变量,这个变量还是-7,符号位会自动继承到long long类型的最高位)
无符号类型unsigned
printf("%u\n", -7);
4294967289
4294967289转化成16进制就是0xFFFFFFF9
%u就是把符号位也当做一个整数一位输出,而不当做符号位;所以unsiged类型的数最小值是0。
相关文章推荐
- HDU 1102 Constructing Roads(Prim求最小生成树)
- 推荐一个微软的认证 MVP 免费的 不过要付出劳动哟 还有机会受邀到美国总部
- android开发之调试技巧
- android开发之调试技巧
- C语言中的转义符'\d', '\n'相关
- android开发之调试技巧
- Codeforces Gym 100187K K. Perpetuum Mobile 构造
- 跟着vamei复习概率论
- android开发之调试技巧 分类: android 学习笔记 2015-07-18 21:30 140人阅读 评论(0) 收藏
- IOS 学习路线
- 面题3 二维数组的查找
- 黑马程序员————Java基础日常笔记---(图形化用户界面)GUI
- 最近在做政务项目,此种项目,本来并不大,主要原因呢,就是要理好业务需要。
- HDU 5285 wyh2000 and pupil (二分图着色)
- AYIT暑假集训大二第一周周三赛 B 跳舞毯
- 号称不会被查水表的通信APP-Telegram
- ACdream 1412 2-3 Trees
- DSAPI之摄像头追踪指定颜色物体
- IOS开发-12.Autoresizing概述
- HUD 4707