定点数的表示和运算
真值(有正负号)和机器数(0正1负)
无符号数与真值and机器数都不是一个概念
移码不是有符号数 ,它没有符号位,他是用于比较大小
原码
整数
n位整数,
最大值为,2ⁿ-1
最小时绝对值取最大,最小为-(2ⁿ-1)
原码的0有两种表示 0:0,0000 -0:1,0000
小数
数值位为n,对于小数: 最大值为1-2的(-n)次方 最小时绝对值取最大,最小为-(1-2的(-n)次方)
最大值:0.1111—》0.1111 0.0001=1
最小值:-0.1111
小数原码的0有两种表示,这个和整数一样 假设数值位为4 0:0.0000 -0:1.0000
8位原码表示的范围是0——255,一共是256个数
范围是-127到 127【因为有一位是符号位】
不过比若说5位原码0,0000和1,0000都表示0,是同一个数!
补码
1.绝对值的和就是我们的模 2 负数 它的模=补数 例如-8的补数:12-8=4,即补数为4 验证:10-8=(10 4)=2 9成为了-3的补数
负数的补数
正数的补数
负数的补数=负数 模
对于负数,如果它的符号位 不用 01表示,
那么模=2n,n表示数值位个数
如果负数的符号位 用 01表示
那么模=2n 1,n表示数值位个数,1为符号位
假设n为4,
最大值:1111,也就是24-1=15
最小值:10000,也就是24 1 (-24)=1,0000
【这个1可以当做符号位,代表负数,
也可以当做数值位,代表16。
总的说就是他可以表示一个最小的负数-16】
补码里面没有 -0
因为 -0:1,0000在我们补码里面不再是 -0,而表示-16
负小数的补码2的由来:
正小数的补码:0.0000
负小数的补码,符号位向前走一位:10.0000,所以2进制(10)=2
原码和补码相互转化:除符号位,按位取反,末尾 1
[y]补 ==> [-y]补
反码
小结
补码和反码,机器数越大,对应的真值越大
移码
移码是为了方便计算机比较两个正负数之间补码的大小关系
比如21的补码:0,10101
- 21的补码:1,01011
单纯比较机器数,-21的补码>21的补码 这显然是不对的。
仔细观察发现,这两个正负数其实只要符号位互换,计算机就可以比较他们的大小了
正数的移码:符号位由0变1就行了
负数的移码:它的补码符号位取反
比如二进制:-10100
补码:1,01100
移码: 2^5^ -10100=0,01100
[X]移<===>[X]补:符号位取反!
移位运算
左移三位,丢掉左边的1,对应的真正就不准确了
左移三位,丢掉左边的1,对应的真正就不准确了
补码:
左移三位,丢掉左边的0,对应的真正就不准确了 因为补码是在原码的基础上按位取反 1得到的,丢掉1相当于是原码的0,不影响准确性
补码:
右移一位,丢掉右边的0,不影响结果,左边补1【补得是符号位】 右移两位,丢掉一个1,影响精度,左边填1【补得是符号位】
反码:
移掉0会影响结果
移调1,相当于原码的0,不影响结果
加减法运算
上图证明了:[A B]补==[A]补 [B]补
先求出A B的值
再就出【A补 B补】的值
【A B】的补码正好和【A补 B补】的值相等
这样,当计算机在求A B时
可以先求【A B】的补,也就是【A补 B补】的值 然后再通过补码转原码
[x]补 [y]补=0.1001 0.1011=1.0100
把1.0100向右移动一位:0.1010,也就是 10/16,再乘2,正好才是结果的20/16
溢出判断
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhgafgkf
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
怎样阻止微信小程序自动打开
PHP中文网 06-13 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01