计组—原码、补码、反码、移码复习
进制之间的转换(略)
unsigned integer (无符号整数)
1. 8位二进制数表示的范围:2^8-1 (减1位二进制的减法运算)
解析:8位二进制数所表示的范围为:00000000 ~ 11111111 ,即最小为00000000 最大为11111111,那么
最大值11111111 = 100000000-1 = 0 ~ 2^8-1
注意:100000000-1 为二进制的减法运算
2,n位二进制数表示的范围为:0 ~ 2^n -1 (计算方式同上)
有符号的数表示方法:
定点数x=x0x1x2......xn在定点机器中表示如下(x0:符号位,0代表正号 1代表负号,x1...xn表示数值;即共有n+1位,其中n位为数值)
1.8位纯小数的表示范围:-0.1111111 ~ +0.1111111
其中0.1111111=1 - 0.0000001 = 1 - 2^-7,所以范围为-(1-2^-7) ~ +(1-2^-7)
注意:0.1111111=1 - 0.0000001 = 1 - 2^-7为二进制减法运算,且由于带有符号,所以数值位只有8-1=7位
2,n位纯小数二进制数表示的范围为:-(1-2^-n)~ +(1-2^-n) (计算方式同上)
3,n位纯整数二进制数表示的范围为:-(2^n -1)~ +(2^n -1) (计算方式同上)
计算机的机器码
1.原码表示法:原码就是数值的真值(绝对值)前面加上一个符号位(正数0,负数1)
例:如下式子中[x]原是机器数,x是真值
x=+0.1001, 则 [x]原=0.1001 (加粗的第一个0表示正数)
x=-0.1001, 则[x]原=1.1001 (加粗的第一个1表示负数)
原码:一个8位二进制的数对应有2^8=256个编码(8位中包含1位符号位),所表示的真值的范围为-(2^7-1) ~ +(2^7-1) 即:-127 ~ +127可以表示的数值个数为127+127=254 加“0”数值得到254=1=255;即原码中256个编码只能表示255个数,原因是0占了两个编码
正0和负0:+0=0000 和 -0=1000
源码的移位规则:符号位不变,数值部分左移或右移,移出的空位补“0”。(左移一位相当于乘以2,右移一位相当于除以2)
十进制转二进制技巧性做法
补码
补码的定义:[X]补 = M + X ; 即X的补码就等于模加上真值X本身,M表示模
当x>=0时,M+X大于M,把M丢掉,所以[X]补=X,即正数的补码等于其本身
当x<0时,[X]补=M+X=M-|X|,所以负数的补码等于模与该数绝对值之差
模的大小:
纯小数补码表示的模M=2,纯整数补码表示的模M=2^(n+1) ,其中n为数值位位数
补码的性质:
(1).0的补码表示
纯小数:[+0]补=2+0.00 = 0.00;[-0]补=2+(-0.00)=0.00
纯正数:[+0]补=2^(n+1)+000=000 ;[-0]补=2^(n+1)+(-000)=000
即:0的补码表示只有一种形式就是0
(2).-1和-2^n的补码表示(注意与原码的表示范围比较)
n+1位纯小数补码:
[-1]补=2+(-1)=10.00+(-1.00)=1.00 =[-0]原
纯小数原码表示中[-1]原是不能被表示的,因为n位纯小数二进制数表示的范围为:-(1-2^-n)~ +(1-2^-n)即2^-n -1为原码的最小值而这个数肯定是要大于[-1]的,因此[-1]无法用原码表示
n+1位纯整数补码:
[-2^n]补=2^(n+1)+(-2^n)=100...0+(-10...0)=10...0
纯整数原码表示中[-2^n]原是不能被表示的,因为n位纯整数二进制数表示的范围为:-(2^n -1)~ +(2^n -1),即-2^n+1为纯整数原码的最小值而这个数肯定是要大于[-2^n]的,因此[-2^n]无法用原码表示
综上可知,-1和-2^n的补码与[-0]原表示形式一样,且对于定点正数和定点小数补码都比原码多表示一位;
补码的表示范围:
一个n+1位定点整数补码的表示范围: -2^n ~ 2^n - 1 即 ( -2^n =< x <=2^n - 1)
一个n+1位定点小数补码的表示范围:-1 ~ 1-2^-n 即(-1 =< x <= 1-2^-n)
(3).补码和原码的关系
对于正数,即若x>=0 , [x]原=[x]补
若x<0,对[x]原 各位按位取反(符号位不变)后再在最低位加1得到[x]补;反之将[x]补除符号位以外各位取反后,再在最低位加1,即得到[x]原
注意:补码中特殊数-1(纯小数)和-2^n(纯整数)的表示,在原码中没有对应表示
(4).[x]补和[-x]补的关系
已知[x]补,将[x]补的各位(含符号位)取反,然后在最低位加1,即得到[-x]补。反之亦然
(5)补码的移位规则
补码的左移(乘2):符号位不变,数值部分左移,最低位移出的空位填充0;
补码的右移(除2):符号位不变,数值部分右移,最高位移出的空位填充符号位
(6)补码的位扩展
例如将字节(8位二进制)表示的补码扩展为16位二进制表示的补码。
扩展的要求:数值本身不发生改变
定点小数:在最低位用0扩展
定点整数:在高位用符号位扩展
注意:在一般在试题中出现加法运算(z=x+y)则是对补码进行操作运算,所以需要将各个数(x,y,z)转换为补码
反码表示
反码的主要作用就是求补码。原码各位取反即为反码,反码末位加1既得补码
(1).反码的表示范围和原码相同。注意纯小数的反码不能表示为-1,纯整数的反码不能表示为-2^n
(2).在反码表示中,用符号位x0表示正负,形式与原码表示相同,0为正,1为负
移码表示
[x]移=(模的指数-1) + 真值[x],
即对于整数,模=2^(n+1) ,[x]移=2^(n+1-1) + x = 2^n + x
对于小数,模=2=2^1,[x]移=2^(1-1) + x = 2^0 + x
(1)移码的符号位:
0表示负数,1表示正数,和原码、反码、补码不同
(2)移码与真值的线性关系
移码的顺序和真值完全一致,因此移码在表示阶码时可以方便的进行大小比较,其结果与真值一致
计组—原码、补码、反码、移码复习相关推荐
- 真值 原码 补码 反码 移码
真值 原码 补码 反码 移码 真值是相对与其它四种的数字类型 书写中一般表示的数叫做"真值" 机器中编码表示的数 "机器数||机器码<原码 补码 反码 移码 > ...
- 计算机组成原理:原码,补码,反码,移码
无符号数 寄存器的位数反映和决定无符号数的表示范围 比如八位的寄存器就只能储存十进制的0-255 有符号数 机器数与真值 在计算机当中没有硬件表示小数点的位置,而小数点的位置是我们自己约定的, 小数的 ...
- 原码 补码 反码 移码
目录 原码 反码 补码 移码 转换 原码 补码 反码 原码 0和1组成 正负用0和1表示(添加在最前面) 真值转原码 转化符号位 数值位十进制转二进制 对于十进制数 233(正数) 正数->符号 ...
- 计算机运算方法之(原码 补码 反码 移码)
无符号数 表示范围:0-65535 有符号数 表示范围: -32768~+32767 正值:0 负数:1 有符号数(小数) 小数:+0.1011表示: 01011 小数点位置在0.1011 小数:-0 ...
- java反码补码原码作用_java原码补码反码关系解析
本文为大家解析了java原码补码反码的关系,供大家参考,具体内容如下 原码:不管源数据是十进制还是十六进制,统统将数字转成二进制形式 反码:把原码的二进制统统反过来,0变成1,1变成0 补码:负数的反 ...
- 原码 补码 反码的转换
正数 : 原码 补码 反码都相同 机器数:+1001010 原码:01001010 (符号位 正数为0) 补码:01001010 (补码与原码相同) 反码:01001010 (反码与原码相同) 负数 ...
- 计算机组成原理之 原码 补码 反码
原码 补码 反码 前言 一.有符号数 1.1原码 补码 反码 总结 前言 在计算机中一般使用二进制表示各个有理数.在计算机中参与运算的数有两大类:有符号数和无符号数.无符号数就是没有符号的数,在寄存器 ...
- c语言原码 补码 反码,C语言 原码--反码--补码
//原码,反码,补码 #include #include //数值的表示方法--原码.反码和补码 //原码:最高位为符号位,其余各位为数值本身的绝对值 //反码: //正数:反码与原码相同 //负数: ...
- java部分基础知识 (二):计算机组成原理 原码 补码 反码 按位符 移位符 按位与 按位或 按位抑或 非 分析hashMap的put方法原理
这里写目录标题 引言 符号位 正数的二进制计算 负数的二进制计算 按位符和移位符 按位符 移位符 分析hashMap运算符 byte和char 总结 引言 最近做完一个项目后,我忽然发现自己的基础并不 ...
最新文章
- VC连接SQL server2005
- iOS 9应用开发教程之使用开关滑块控件以及滚动部署视图
- 小M的简单题(easy)
- mysql limit不要1_切记!MySQL中ORDER BY与LIMIT 不要一起用,有大坑
- TensorFlow:深度学习框架TensorFlow TensorFlow_GPU的简介、安装、测试之详细攻略
- SpringBoot_配置-@ConfigurationProperties与@Value区别
- Win10系列:JavaScript页面导航
- Spring 事务失效的 8 种场景!
- c++ new, operator new, placement new
- java获取客服列表,java-从列表中获取处理案例的服务
- Spring架构这么牛逼,这两大特性不得不说说!
- Android 判定手机是否root
- anaconda报错Collecting package metadata (current_repodata.json): failed
- HCIA-Big Data华为认证大数据工程师在线课程笔记
- Adobe Acrobat Professional 7.0
- Xmas snow for Mac(圣诞桌面装饰软件)
- 调取python背景减法库:MOG2和KNN,非常好用
- Position属性值的相关解析
- OSChina 周一乱弹 ——月薪三万长的帅的为啥找不到女朋友
- 实习入职这几天天的感受与感想
热门文章
- 苹果笔记本怎么找文件夹_如何在苹果笔记本中找出 “~/Library/Preferences/” 文件夹?...
- 7. 关于IntelliJ IDEA删除项目
- 深入理解计算机系统(2.3)---整数的表示方式精解无符号与补码编码(重要)...
- 3DMax的OFusion插件的使用问题
- 森汉姆算法(AS3)-检测两点之间所经过的节点
- Oracle访问数据的存取方法
- Windows访问令牌相关使用方法
- 九个著名科技公司的十位CEO的办公桌照片
- work hard, think harder
- Windows 2000本地路由表