【Dognle】【计算机硬件】原码、反码、补码、移码
来源:互联网 发布:违规网络音乐 编辑:程序博客网 时间:2024/05/16 09:17
原码
将最高位用作符号位(0表示正数,1表示负数),其余各位代表数值本身的绝对值表示形式
例如+1:00000001,-1:1000 0001
再直接使用原码在计算时会有麻烦,十进制1和-1相加得0,但是二进制原码相加
(0000 0001)2+(1000 0001)2=(10000010)2,结果得-2,所以,使用原码直接参数计算可能会出现错误的结果,故而原码的符号位不能直接参与计算,必须和其他位分开,这样会增加硬件的开销
反码
正数的反码与原码相同,负数的反码符号位为1,其余各位为该数绝对值的原码按位取反
例如-1:1111 1110,第一个“1”是符号位不变,后面的“111 1110”则是由原码“000 0001”取反得到,即“1”换成“0”,“0”换为“1”得到。
由于,(0000 0001)2+(1111 1110)2=(1111 1111)2,其中(1111 1111)2是负0,由于普通观念中,0不分正负,故反码的符号位可直接参与计算。
补码
正数的补码与原码形同,负数的补码是该数的反码加1,即补“1”
例-1:1111 1111是由1000 0001转换成反码11111110,再补“1”
(1111 1110)2+(0000 0001)2=(0000 0000)2,直接使用补码进行计算的结果也是正确的,故而补码的符号位也可以直接参与计算
对于一个补码表示的数,要计算其原码,只要对它再次求补即可得到该数的原码
移码
移码是对补码的符号位取反得到的,只用于表示浮点数的阶码
例如-1:0111 1111
以+1和-1(8位二进制)为例:
原码
反码
补码
移码
正数
0000 0001
原码
原码
1000 0001
负数
1000 0001
1111 1110
1111 1111
0111 1111
可计算
否
可
可
可
特征
符号位(最高);
0正,1负
正不变,
负非符号位取反
正不变,
反码并补1
补码符号位取反
- 【Dognle】【计算机硬件】原码、反码、补码、移码
- 原码、反码、补码、移码
- 原码、反码、补码、移码
- 原码,反码,补码,移码
- 原码,反码,补码,移码
- 原码,补码,反码,移码
- 原码、反码、补码、移码
- 原码 补码 反码 移码
- 原码反码补码移码
- 原码,反码,补码,移码
- 原码,反码,补码,移码
- 原码、反码、补码、移码
- 原码 反码 补码 移码
- 原码、反码、补码、移码
- 原码,补码,反码,移码
- 原码,反码,补码,移码
- 原码,反码,补码,移码
- 原码、反码、补码、移码
- 给定一个整数(字符串也适用)序列,重新排列,得到最大的结果,比如31,3,35,7,9根据排列后得到组合 9735331,返回的是string类型
- ubuntu 14.0.4 Mongodb 安装
- 《c和指针》摘录5—函数
- HDU:5907 Find Q(水题)
- js基础教程面向对象
- 【Dognle】【计算机硬件】原码、反码、补码、移码
- UVA 11491 Erasing and Winning(贪心)
- poj_2965 The Pilots Brothers' refrigerator(bfs+位运算)
- Android Butterknife
- HDOJ 5533 Dancing Stars on Me(qwb铜牌水题 几何)
- 点击back按钮时触发onload事件方法
- HDU - 3549 Flow Problem
- 解决:在使用JSONP跨域请求时.AJAX的dataFilter获取返回数据出现undifined
- Php的mail()函数的使用