原码,反码,补码,移码
来源:互联网 发布:potplayer播放器mac版 编辑:程序博客网 时间:2024/06/05 18:33
以8位二进制为例:
原码进行有符号运算是出错,
引进反码,反码运算出现-0,+0,
引进补码,-0的二进制表示(10000000)表示最小的负数(-128)
引进移码,为了方便阶码对阶,比大小,负数符号为1,变成0,正数符号为0,变成1,负数,正数整体向右偏移,更方便比较大小。
移码=补码+10000000.
阶码255用于表示溢出。
首先说一下原,反,补,移码. 移码其实就等于补码,只是符号相反. 对于正数而言,原,反,补码都一样, 对负数而言,反码除符号位外,在原码的基础上按位取反,补码则在反码的基础之上,在其最低位上加1,要求移码时,仍然是先求补码,再改符号.
在IEEE754标准中,规定,float的32位这样分:
符号位(S)
1
阶码(E)
8
尾数(M)
23
double的情况与float完全相似,只是它的内在形式是
符号位(S)
1
阶码(E)
11
尾数(M)
52
查看数值内存表示方法:
float fDigital = 0.0f;
unsigned long nMem;// 临时变量,用于存储浮点数的内存数据
// 将内存按位复制到临时变中,以便取用,此时的nMem并不等于fDigital了,它是按位复制的。
nMem = *(unsigned long*)&fDigital;
cout<<nMem<<endl; //一般得到一个很大的整数.
bitset<32>mybit(nMem);//妙在此处,这里的输出就是32float的内存表示了.终于完全直观地看到了.
cout<<mybit<<endl; //00000000000000000000000000000000 用-0.0来试,也是如此.
参考:http://blog.csdn.net/biblereader/archive/2006/06/21/819428.aspx
- 原码、反码、补码、移码
- 原码、反码、补码、移码
- 原码,反码,补码,移码
- 原码,反码,补码,移码
- 原码,补码,反码,移码
- 原码、反码、补码、移码
- 原码 补码 反码 移码
- 原码反码补码移码
- 原码,反码,补码,移码
- 原码,反码,补码,移码
- 原码、反码、补码、移码
- 原码 反码 补码 移码
- 原码、反码、补码、移码
- 原码,补码,反码,移码
- 原码,反码,补码,移码
- 原码,反码,补码,移码
- 原码、反码、补码、移码
- 原码,反码,补码,移码
- 多普达与HTC关系
- Struts2 中国际化配置文件中需注意的问题
- Tomcat6.0+Eclipse3.3+Lomboz3.3图文配置详解
- 查看存储过程代码
- mysql数据库中文乱码问题 解决办法
- 原码,反码,补码,移码
- 单链表的冒泡排序
- MySql常用命令总结收藏
- jsp三种跳转方式[详]
- SOAP中 RPC/ENC 为什么被抛弃?
- iptables配置详解
- 笑话
- 目前遇到的问题
- 修改及查看mysql数据库的字符集