声明:笔者仍为在校学生,有错误之处恳请批评指正。
文章结构:
1.怎么写各种码? 快餐式直达!
2.各种码的特点及详细内容扩充(更新中)
3.各种码之间有什么关系?(更新中)
第一部分:怎么写各种码? 最快直达!(以八位二进制为例)
整数的各种码表示:(以+ - 35为例)
原码:
(+35)00100011,就是35的二进制数,注意始终要8位,前面补零;
(-35)10100011,最高位放符号位,1表示负。
补码:
(+35)00100011,和原码表示相同
(-35)11011101,+ 35 的原(补)码全部按位取反,最后一位加一。
反码:
(+35)00100011,和原码补码都相同
(-35)11011100,+ 35 的原码全部取反获得。或者补码最低位减去一获得。
移码:
(+35)10100011,补码符号位取反
(-35)01011101,补码符号位取反
纯小数的各种码表示(以0.46875为例):
原码:
(+0.46875)0.0111100,就是转化为二进制的结果。
注意计算机中没有小数点的表示,这里仅仅为了说明小数点的位置。
(-0.46875)1.0111100加上符号位即可。
补码:
(+0.46875)0.0111100,和原码的表示相同。
(-0.46875)1.1000100,采用的方法和整数一样,原码包括符号位全部取反,末位加一。
反码
(+0.46875)0.0111100,和原码相同
(-0.46875)1.1000011,补码最低位减一获得。
移码:
(+0.46875)1.0111100补码符号位取反
(-0.46875)0.1000100补码符号位取反
可见,定点纯小数的各种码写法和定点整数可以说几乎一模一样(在反码的书写上少了一种方法而已)
第二部分:各种码都有什么特点?有没有别的写法?
原码:又称作带符号的绝对值表示,符号位为0表示正数,为1表示负数。数位值就是这个数字真值的绝对值。
(可以关注笔者的其他文章~软件工程程序员的学习生活全记录,本文也将持续更新~)
不加糖的鸡蛋卷:新手程序员是怎么学习的? 大学生活、学习以及未来实习工作全记录!持续更新中zhuanlan.zhihu.com