数制与码制——二进制和原码 补码 反码

数制

基数(Radix)

指表示计数进制所用的字符或数码的个数,是每一个数位可能出现的所有符号;并写为数的下标用来表示数字采用什么进制

十进制: 0~9  十个阿拉伯数字
二进制: 0~1
十六进制: 0~9 和 A~F

位权值(Weight)

指数制中每个数位对应的位值

十进制数:100 的百位数字的位权值就是10^2

二进制(Binary Number System)

加减计算:逢二进一,借一当二
乘法:有二进制数 b
b*2^k == b的小数点向右移k位,k可以为负(即为除法)

二进制 八进制 和 十六进制的转化

每三位二进制数等于一位八进制数,每四位二进制数等于一位十六进制数

二转八:以小数点为原点,分别向左右每三位分组,不足三位时用0补齐,每一组对应转化为八进制数;
二转16: 以小数点为原点,分别向左右每四位分组,不足的用0补齐,每一组对应转化为16进制数;
须知:每一组转化后,将转化得到的数字按原来序列排布即可

例如:

101110.1010(二进制)=(0010 1110.1010)= 2E.A(十六进制)
101110.1010(二进制)=(101 110,101 000)=56.5(八进制)

码制

数据的表示方法

真值法和机器数

真值法: 正负用符号+ 和- 来表示
机器数: 将+ 和- 数码化, 用特定的数码来表示

符号位和数值位(机器数的表示)

电脑中存储方式

原码(存在+0和-0,不能变减法为加法带符号位计算)

数值位部分为真值法表示的数的绝对值,符号位和真值法中的符号一一对应
原码 == 符号位编码 + 真值绝对值

+8 == 0//符号位 100//数值位==0100
-4 == 1                10==110

反码(存在+0和-0)

符号位和原码相同
数值位:正数->和原码相同 负数->原码数值位按位取反

+8  原码: 0100  反码: 0 100 正数不取反
-4  原码: 110   反码: 1 01 负数取反 

补码

指一个计量系统的计数范围,例如时钟计量范围是0~11,模=12
那么n位的计算机的计量范围是0~(2^n)-1,模 = 2 ^n
模实质上是计量系统产生的溢出的量,他的值在系统中无法表示,只能表示其余数
任何有模的计量系统,均可以化减法为加法

最后一句话的理解:
11点钟调整到3点钟
可以顺时针拨4个小时(11+4)%12
可以逆时针拨8个小时 (11-8)%12
两者关系记为: -8=4 (mod 12)
意为:-8和4对模12是互补的,(或 以12为模时,两者互为补码)

补码表示法

正数与原码相同
负数的补码的符号位是1,数值位为其反码的末尾加1(注意,末尾包括小数点后的数字)

原码:1 1010
反码:1 0101
补码:1 0101+1=10110
原码:-0.1010 = 1.1010
反码:1.0101
补码:1.0101->1.0101+0.0001->1.0110

三者对应表格

在这里插入图片描述
可以看出:
正数的原码反码补码均相同
负数反码为原码符号位不变,数值位按位取反,补码是继续在反码的基础上末尾加1

为何补码可以带符号位计算

其实反码已经能够带符号位计算了,但是要将进位得到的数字加到末尾,才能得到结果
补码直接在码制上末尾加一,就可以直接将符号位的进位丢掉,就得到正确结果;而且正好也解决了两个0的问题

总结与结论

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值