飞机航班动态查询,孙大发,弄月 草食性恐龙
机器数:
一个数在计算机中的二进制表示形式,叫做这个数的机器数。机器数是带符号的,在计算机用一个数的最高位存放符号,0表示正数,1表示负数。
例如:+2二进制数:0(符号位)000 0010;-2二进制数:1(符号位)000 0010。
其中,0000 0010和1000 0010就是机器数。
真值:
因为第一位是符号位,所以机器数的形式值就不等于真正的数值。
例如,上面1000 0010,其中,最高位1代表负数,而其真正的数值是-2而不是242(1000 0010转换为十进制为242)。
所以,为区别起见,将带符号的机器数对应的真正数值称为机器数的真值。
例如:0000 0010 = +000 0010 = +2;1000 0010 = -000 0010 = -2。
原码:
原码就是符号位加上真值的绝对值。
+2 = 0000 0010[原] -2 = 1000 0010[原]
取值范围。
[1111 1111, 0111 1111] ==> [-127, 127]
反码:
反码就是,正数的反码是其原码本身,负数的反码是原码基础上,符号位不变,其余位取反。
+2 = 0000 0010[原] = 0000 0010[反]
-2 = 1000 0010[原] = 1111 1101[反]
取值范围。
[1111 1111, 0111 1111] ==> [-127, 127]
补码:
补码就是,正数的补码是其原码本身,负数的补码是反码基础上,+1。
+2 = 0000 0010[原] = 0000 0010[反] = 0000 0010[补]
-2 = 1000 0010[原] = 1111 1101[反] = 1111 1110[补]
取值范围。
[1000 0000, 0111 1111] ==> [-128, 127](-128只有补码,没有原码、反码)
为什么会用到反码和补码?
//原码。 1 + (-1) = 0000 0001[原] + 1000 0001[原] = 1000 0010[原] = -2(结果错误,于是,出现了反码。) //反码。 1 + (-1) = 0000 0001[反] + 1111 1110[反] = 1111 1111[反] = 1000 0000[原] = -0(结果正确,现有+0[0000 0000][原]、-0[10000 0000][原], 但是0无正负之分,并且只能有一个0,于是,出现了补码。) //补码。 1 + (-1) = 0000 0001[补] + 1111 1111[补] = 0000 0000[补] = 0000 0000[原] = 0(用0000 0000表示0,用1000 000表示-128。) (-1) + (-127) = 1000 0001[原] + 1111 1111[原] = 1111 1110[反] + 1000 0000[反] = 1111 1111[补] + 1000 0001[补] =1000 0000[补]
= -128(-128只有补码,没有原码、反码。)
使用补码,不仅修复了0的符号以及存在两个编码问题,而且还能多表示一个最低数(-128)。
以上是我对原码、反码、补码的理解,希望可以给需要的朋友带来帮助。
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
新补丁让Windows 10出现死机、卡顿等 微软坐不住称正解决
Ubuntu 20.04 LTS进驻Windows子系统:只能用3年
ThinkPad正式加入:预装Linux发行版而非Win10的PC越来越多了
最新版Android 11推送!谷歌Pixel 5被曝光:支持反向充电
高度致敬Windows!开源优麒麟20.04 LTS发布:支持5年
电脑小知识:Windows 10是用什么语言写的?到底有多少行代码?
Win10 5月更新准正式版:微软引入大量新功能 系统响应速度快
Windows 10新预览版19613推送:修复任务栏图标显示异常BUG
Windows AD 报错解决:UAC File Virtualization服务启动失败 此驱动程序被阻止加载
网友评论