进制转换与原码反码补码

来源:互联网 发布:政府服务平台软件 编辑:程序博客网 时间:2024/05/16 16:01

进制的转换和变量

数据的存储

【注】我们使用计算机是为了储存数据,计算(处理)数据。

【问】计算机如何存储数据呢?

【答】要弄清计算机如何存储数据,首先要弄清计算机如何存储数字。



1.二进制数

// 计算机存储数据最适合使用二进制,即使用0,1两个数表示所有的自然数


【例】 

十进制: 0 1 2 3 4 5 6 7 8 9 

二进制: 0 1

采用二进制,机械容易实现


1bit    导通三极管

8bit  == 1字节

1024字节 == 1K

1024kb == 1M

1024mb == 1G

1024gb == 1T

(1) 十进制转换成二进制

67(10) == 100 0011(2) 

66(10) —> ?(2)

2 — 33 ——0

2 — 16 ——1

2 —  8 —— 0

2 — 4 —— 0

2—  2 ——- 0

2 — 1 —— 0

2—————1

从下向上 66即 1 000 010

(1)十进制转成二进制(除2 记余数 从下向上写出来) //倒除法

(2)二进制转十进制


1001110 (最低位 0位 相当于十进制的个位)

// 用当前位的数字(1/0)乘以2的位数次方

100 1110 = 0*2^0 + 1*2^1 +1*2^2 + ……

简化后拿出1的次方数之和     2^1 + 2^2 + 2^3 + 2^6


  (3)  八进制和十六进制

  //  这两个进制既具备一定的可读性,又能快速地转换成二进制数

  八进制: 0 1 2 3 4 5 6 7

7 + 1 = 10  ——       10(8)

  十六进制: 0 1 2 3 4 5 6 7 8 9 A B C D E F

F + 1 = 10 ——  10(16)


*1*八进制转二进制

34(8) ——>  011 100(2)

67(8) ——>  110 111(2)

【三位一取】 八进制的一位相当于二进制的三位,转换的时候以十进制为准(即当前八进制数的十进制0—7)

0      000 

1001

2010

3011

4100

5101

6110

7111

*2*十六进制转二进制

【四位一取】 十六进制的一位相当于二进制的四位,转换的时候以十进制为准

34(16) ——> 0011 0100 

5a(16) ——> 0101 1010


*3*二进制转换成八进制和十六进制

 【三位一取】

【四位一取】

【原则】从低位开始取

100100101 ——》 445(8)

*4*八进制和十六进制的应用举例

权限: 增加可读性 和 书写便利


颜色: 使用十六进制表示

    #FFFFFF 白色

    #000000 黑色

          753d       61  11 1101  

1566e     110110 1110


(4).原码、反码和补码

<1>原码

【注】 计算机存储数据,要先开辟空间,再储存数据

开辟空间的最小单位是字节


【注】存储数据时,用最高位表示符号,其他位表示数值的大小。用0表示正数,1表示负数


如果想存储一个6,必须先规定分配多少字节。

0000 0110

0000 0000 0000 0110 

如果想存-6 

1000 0110

1000 0000 0000 0110

规定了字节数,写明了符号位,我们得到了6的原码。

【思考】用一个字节存储1和-1的原码,讨论计算机是否可以以原码形式存储二进制数。

0000 00011

1000 0001-1     +

=      1000 0010 -2 (与预期结果不同)

【结论】 计算机不能以原码形式存储数据,否则影响运算


<2>反码

正数的反码就是原码,负数的反码是原码符号位不动,其他位按位取反(1变0,0变1)

【例】求3和-4的反码 (以1字节为准)

0000 0011 原码   反码   3

1000 0100 原码  -4

1111 1011 反码  -4

【练习】求2字节下,8和-15的原码和反码

0000 0000 0000 1000   原码、反码

1000 0000 0000 1111  -15原码

1111 1111 1111 0000  -15反码


【结论】计算机不能以补码形式存储数据。


<3>补码

计算机以补码的形式存储数据。

正数的原码、反码、补码三位一体,负数的补码是反码加1.


6与-6的补码

0000 0110 原码 即补码


1000 0110 -6原码

1111 1001 -6反码

1111 1010 -6补码 

【思考】 用一个字节存储1和-1的补码,讨论计算机是否可以补码形式存储二进制数。

0000 0001 1 

1111 1111 -1 +

=    1 0000 0000 (最高位的1溢出了)

【结论】计算机以补码存储数据。


【练习】1字节,求7,-56,-9的补码

0000 0111       7的补码


1011 1000-56的原码

1100 0111-56的反码

1100 1000-56的补码


1000 1001     -9原码

1111 0110     -9反码

1111 0111     -9补码


【思考】 为什么补码称作补码?

【思考】 给你一个补码,如何知道这个补码表示多少?

【注】 对补码再求一次补码会得到原码

1111 1010

1000 0101

1000 0110  -6的原码


1111 1111  -1   +

1111 1111  -1  

=1111 1110 补码

1000 0001 反码

1000 0010  原码  -2


0 0
原创粉丝点击