3-数据之间的进制转换
1.数据进制之间的转换
任何送⼊计算机的数字,字⺟,符号等信息必须转换成 0、1 组合的数据形式才能被计算机识别。
能够进⾏算术运算得到明确数值概念的信息成为计算机数值数据,其余的信息成为⾮数值数据。为了⽅便数据存储,我们把数据按照使⽤习惯以进制的⽅式来进⾏划分。
我们把进制也叫做进制位,是⼈们规定的⼀种进位⽅式。我们可以使⽤有限的数字符号来代表所有的数值。可使⽤数字符号的数⽬,我们称为为基数。基数为 n,则为 n 进制。数制中某⼀位上的 1 所表示 数值的⼤⼩我们称为位权。
例如:
⼗进制数 123 ,基数为 10. 我们可以只⽤ 0~9 这是个数组符号。
3----------> 位权为 1( 即 10 的 0 次⽅ )
2----------> 位权为 10( 即 10 的 1 次⽅ )
1----------> 位权为 100( 即 10 的⼆次⽅ ) 123 = 1 * 10 的 2 次⽅ + 2 * 10 的 1 次⽅ + 3 * 10 的 0 次⽅
10进制:可⽤的数字符号: 0-9 基数:10 特点:逢⼗进⼀
例如: 110 −10 = 100
110−10=100
200 +100 = 300
200+100=300 计算机中⽤我们的⼆进制来表示我们的数据。
2进制:可使⽤的数字符号:0,1 基数:2 特点:逢⼆进⼀
例如:(1010)2 − (0101)2 = (101)2
(1010)2 −(0101)2 =(101)2
8进制:可使⽤的数字符号:0,1,2,3,4,5,6,7 基数:8 特点:逢⼋进⼀
例如:(713)8 + 114)8 = (1027)8
(713)8 +(114)8 =(1027)8
(713)8 − (114)8 = (577)8
(713)8 −(114)8 =(577)8
. 16进制:可使⽤的数字符号:0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f 基数:16 特点:逢⼗六进⼀
例如:
2. ⽅法:
将相应进制的数按位权展开成多项式,求⼗进制的和。
常规⽤法:
除基取余法:⽤我们的⼗进制数去除以我们⽬标的基数,第⼀次相除所得余数为⽬的数的最低位, 将 所得商再除以基数,反复执⾏上述过程,直到商为 “0”,所得余数为⽬的数的最⾼位。
例如:
乘基取整法:⽤⼩数乘以⽬标数值的基数,第⼀次相乘结果的整数部分为⽬的数的最⾼位, 将其⼩数部分再乘基数依次记下整数部分,反复进⾏下去,直到⼩数部分为 “0”,或满⾜要求的精度为⽌。
⾼效⽤法:
8421 码是⼀种编码⽅式,⼜为 8421BCD 编码,是⼀种⽤ 4 位⼆进制码的组合代表 1 位⼗进制数的编 码 ⽅法。因为是 4 位⼆进制,转换为⼗进制,每位的权分别为:2323,2222,2121,2020, 也就是 8,4,2,1 ,因⽽得名。
⼆进制转换为⼗进制:
⼗进制转换为⼆进制:
使⽤⽅法:
把⼀个⼗进制数拆分位上述右边的数值相加 然后把⼆进位从⾼到列排列。
若是⽤到了对应的数值,⼆进制位设置为 1,否则设置为 0
书写完毕后,对应的⼆进制位排列就是该⼗进制转换为⼆进制的值。
3.原码反码补码
1. 原码、反码、补码的存储
注: 下⾯的讲解只涉及到基本规则使⽤,没有设计到具体数据类型。待学习后⾯数据类型后,会进⾏
我们刚刚给上⾯计算的数都是我们的正数。对我们⼈常常来说使⽤的⼗进制,⽽⼀个⼗进制数是有正负 之分的,那么如何在计算机中如何表示我们的正号和负号呢?这个就涉及到了,我们计算机的编码形 式,在计算机中,⽤我们的原码、反码、补码来表示数据。在内存中的数据使⽤补码来存储。
A. 数据就在内存中总是以⼆进制补码的形式存放。最⾼位为符号位。正数为 0,负数为 1 (不完全)
B. 正数的原码、反码、补码就是它本身。原码该数转换位⼆进制的形式
C. 负数的反码 :符号位不变,对原码其它位依次取反。0 变 1,1 变 0 负数的补码 :符号位不变,反码 + 1
例如:
以 8bit 的数据存储为例讲解。
2.补码转换为原码
⽅法 1: 原码 = 补码 - 1 ,然后符号位不变,按位取反