进制转换 与 原码反码补码

目录

1.进制

1.1 10进制

1.2 2进制

1.3 8进制

1.3 16进制

1.4总结

2.进制之间的转换

2.1   10进制转2进制

2.2 2进制转10进制

2.3 2进制转8进制

2.4 2进制转16进制

3.原码、反码、补码

3.1介绍

3.2补码以及使用原因


1.进制

我们常听说 10进制、2进制、16进制、8进制等说法,他们分别是什么意思呢?

1.1 10进制

生活中,最常用的就是10进制。

(1)10进制的规则就是:逢10进1,各个数位上的数字大于等于0,小于等于9

(2)一个数的大小就等于这个数各个数位上的数字乘以它的权重

(3)从右向左,各个数位上的权重位 ...,10^(-1), 10^0, 10^1, 10^2, 10^3 ........

10进制中: 123 = 1 * 10^2 + 2 * 10^1 + 3 * 10^0

为了与其他进制进行区分, 将相应的数字用括号括起来,并在右下角标明进制

1.2 2进制

依样画葫芦,

(1)2进制的规则就是:逢2进1,各个数位上的数字大于等于0,小于等于1

(2)一个数的大小就等于这个数各个数位上的数字乘以它的权重

(3)从右向左,各个数位上的权重为...,2^(-1), 2^0, 2^1, 2^2, 2^3 ........

2进制中:  1001 = 1 * 2^3 + 0 * 2^2 + 0* 2^1 + 1 * 2^1

为了与其他进制进行区分, 将相应的数字用括号括起来,并在右下角标明进制 

1.3 8进制

依样画葫芦,

(1)8进制的规则就是:逢8进1,各个数位上的数字大于等于0,小于等于7

(5) 编程语言中常在8进制数值前面加上: 0

(2)一个数的大小就等于这个数各个数位上的数字乘以它的权重

(3)从右向左,各个数位上的权重位...,8^(-1), 8^0, 8^1, 8^2, 8^3 ........

8进制中:  4331 = 4 * 8^3 + 3 * 8^2 + 3* 8^1 + 1 * 8^1

 为了与其他进制进行区分, 将相应的数字用括号括起来,并在右下角标明进制 

1.3 16进制

依样画葫芦,

(1)16进制的规则就是:逢16进1,各个数位上的数字大于等于0,小于等于15

(2)当数字大于的等于10时, a (A),b(B) , c (C), d (D), e (E), f(F)

分别表示10, 11 , 12 ,13, 14, 15

此时字母大小写都可,一般要么全大写,要么全小写

(5) 编程语言中常在16进制数值前面加上: 0x

(3)一个数的大小就等于这个数各个数位上的数字乘以它的权重

(4)从右向左,各个数位上的权重位 ...,16^(-1),16^0, 16^1, 16^2, 16^3 ........

16进制中:  4ac1 = 4 * 16^3 + 10 * 16^2 + 12* 16^1 + 1 * 16^1

  为了与其他进制进行区分, 将相应的数字用括号括起来,并在右下角标明进制 

1.4总结

了解不同进制,需要了解它各个数位的权重以及数位上数字的范围

2.进制之间的转换

2.1   10进制转2进制

示例  十进制的123转为2进制是多少?

123 / 2  = 61 ...1

61 / 2 = 30 ... 1

30 / 2 = 15 ... 0

15 / 2 = 7 ... 1

7 / 2 = 3 ...1

3 / 2 = 1 ... 1

1 / 2 = 0 ... 1

所以答案是 1111011

(1)方法就是 首先用该数除以2,得到第一个商 和 第一个 余数

再用第一个商除以2,得到 第二个商 和 第二个余数

以此类推,直到 商为0,再将余数从下至上排好顺序,就把10进制数转化为2进制数啦

(2)当然,还有一种稍微简单的算法就是 “dou”

123 = 64 + 32 + 16 + 8 + 2 + 1 = 2^6 + 2^5 + 2^4 + 2^3 + 2^1 + 2^0

所以123的2进制数就是 1111011

2.2 2进制转10进制

(1)只需要将2进制各个数位上的数字乘以相应的权重即可

2进制数 1111011 = 2^6 + 2^5 + 2^4 + 2^3 + 2^1 + 2^0 = 123

2.3 2进制转8进制

(1)我们知道一个3位2进制数最大为7,8进制每个数位最大值也为7,

2^0+2^1+2^2 = 7*8^0, 即2进制数111 = 8进制数7

2^3+2^4+2^5 = 7*8^1 即2进制数111000 = 8进制数70

所以将2进制数3个数位3个数位组合在一起,依次计算写下即可

(2)示例: 2进制数 1111011转化为 8进制是多少?

1111011 = 001 111 011(从右向左3位为一组,不足3位的在左边补0)

所以该2进制数转化为8进制为 173

2.4 2进制转16进制

(1)我们知道一个4位2进制数最大为15,16进制每个数位最大值也为f (F),

2^0+2^1+2^2 +2^3 = f*16^0, 即2进制数1111 = 16进制数f

2^3+2^4+2^5+2^6 = f*16^1 即2进制数11110000 = 16进制数f0

所以将2进制数4个数位4个数位组合在一起,依次计算写下即可

(2)示例: 2进制数 1111011转化为 16进制是多少?

1111011 = 0111 1011(从右向左4个数位为一组,不足4位的在左边补0)

所以该2进制数转化为16进制为  7b

3.原码、反码、补码

3.1介绍

(1)针对于整数的2进制表示方法,有原码、反码、补码的说法

(2)有符号整数的三种表示方法由符号位与数值位两部分组成,

最高位的1位为符号位,其余的就是数值位

符号位上0表示数,1表示

(2)无符号整数没有符号位,只能表示正数和0,

由于缺乏符号位,所以不需要区分原码反码补码

无符号整数的二进制表示就是其真实的数值表示

(3)正整数的原码反码补码相同,负整数各不相同

原码:直接将数值按照正负数的形式翻译成⼆进制得到的就是原码。

反码:将原码的符号位不变,其他位依次按位取反就可以得到反码。

补码:反码+1就得到补码

(4)补码得到原码也是可以使⽤:

-1,取反的操作 或者 取反,+1的操作。

(5)示例:(假设只有8位)

123的原码反码补码是:01111011

-123的原码是11111011 反码是10000100 补码是10000101

补码转为原码:

(1)-1,取反

10000101 ---> 10000100 ---> 11111011

(2)取反, +1

10000101 ---> 11111010 ---> 11111011

3.2补码以及使用原因

在计算机系统中,数值一般采用补码的形式进行存储

原因:(1)cpu只有加法运算器,补码可以统一加减法运算

(2)补码可以统一处理符号位和数值位

(3)补码原码之间的相互转换过程相同,不需要额外的硬件电路

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值