数和数制
1.1 数(数据)
计算机存储的数据
视频---->*.mp4 *.avi *mkv *rmvb(淘汰) *.wmv
图片---->*.jpg *.png *.bmp
音频---->*.mp3 *m4a *.wma
他们都是以特殊的编码格式存在计算机中的。
例如 :*.mp3 格式 也是一种 音频压缩技术。mp4特殊中的压缩格式(高清的格式)。
数值数据
1.整数 100,10,15,0。
10进制数,特点逢10进1。10进制数 是我们人类交流的时候用的。
计算机处理这些数据 100,10,15等这些10进制数据的对应的2进制数。
计算机语言 叫机器语言是二进制的。
二进制的数是由 0 和1 两个数字组成,特点逢二进一。
计算机想要表示是一个二进制 0000 0101(2)
2.进制转换
10进制的整数 ------>2进制的数
例如:10 这个转换成2进制数。
2.1 辗转相除法
辗转相除法求一个10进制数的2进制,循环对2取余数,直到商为0,逆序输出 余数。
例如:
10/2 商 5 余 0
5/2 商 2 余 1
2/2 商 1 余 0
1/2 商0 余 1
这个数的二进制数 就是 余数逆序输出0000 1010(2)
练习:求以下10进制数的对应的二进制的数。
32 ---->0010 0000(2) 2^5
8 ---->0000 1000(2) 2^3
64
50
第二种计算10进制数的2进制数(口算 200以内的二进制数)
二进制数 0000 1010(2)
2---->叫做基数
从左到右 叫做 由高位到低位。每一个2进制位上的数 都对应一个位的位权。位权就表示这一位2进制数对应的2的几次方。
最右边的这一位:2^0 = 1;
右边的第二位:2^1 = 2;
2进制数----->10进制数
0000 1010 = 0*2^0 + 1*2^1+0*2^2+1*2^3 = 0+2+0+8 = 10
快速计算2进制数的方法(200以内)
2^8 2^7 2^6 2^5 2^4 2^3 2^2 2^1 2^0
256 128 64 32 16 8 4 2 1
130 0 1 0 0 0 0 0 1 0
10 0 0 0 0 0 1 0 1 0
32 0 0 0 1 0 0 0 0 0
127 0 0 1 1 1 1 1 1 1
110 0 0 1 1 0 1 1 1 0
9
3. 8进制数
8进制数 是由0~7共8个数字组成的,逢八进一。
一般我们表示一个数的8进制 0开头 如 0123 或者 123(8)
辗转相除法 循环对8取余数,直到商为0,逆序输出余数。
4. 16进制数
16进制数 是由0~9共10个数字 以及字母A~F,组成的一 个逢十六进一的数字。
一般表示格式为:0x00F423C04或0X00F423C04或
00F423C04(16)
通常 我们表示内存地址时使用。
1>把10进制整数----->16进制整数
辗转相除法,循环对16取余数,直到商为0,逆序输出。
0~9 A = 10 B=11 C=12 D=13 E=14 F=15
例如:65这个数的16进制数
65/16 商4 余 1
4/16 商0 余 4
用:0x开头表示这个数 0x41
2>把16进制整数----->10进制的整数
16^2 16^1 16^0
0 4 1
计算结果 = 1*16^0 + 4*16^1 = 1 + 64 = 65
练习:计算以下10进制整型的2进制 和 16进制数分别是多少
99 85 14 56 80 77 150 126 101
99----> 0110 0011(2)
0x63
85---->0101 0101(2)
0x55
14----->0000 1110(2)
0xE
56----->0011 1000(2)
0x38
80----->0101 0000(2)
0x50
77----->0100 1101(2)
0x4D
150---->1001 0110(2)
0x96
126----> 0111 1110(2)
0x7E
101----->0110 0101(2)
0x65
数在计算机中存储,不光只能存储一些正数,还有负数。在计算中 负数是通过这个数的二进制数的 符号位来表示
的。一个二进制数的最高位 为符号位。来表示+ -,如果该位上的数为0 就表示这个一个正整数,如果该位上的数
为1 就表示这个数是一个负整数。
数值有正负之分,整数是怎么样存储在计算中的,一个数的最高位为符号位,表示正负,这就是机器数(2进制)的源码。假设计算机的CPU中央处理器能够处理的位数 8位 ,就是一个字节1byte = 8bit,那么源码能表示的数值的范围就是
从
-128 ~ 0~ 127 共 256个
有了数值的表示方法 就可以进行对数字的算术运算。(+ -
* /),但是很快就能发现一个问题,就是带符号位的源码进行乘法 或 除法运算时结果是正确的,但是加法 和 减法的运算有时候可能会出现问题。
整数都是以它的补码的形式存在我们计算机中的。
源码 反码 补码
+ 源码反码补码都相同,就是这个数的2进制数。
- 负数的源码 = 先取绝对值以后 得到的这个正数的2进制数的值,然后再把最高位置成 1 。
负数的反码 = 这个数的源码保持符号位不变,其余的每一个2进制位上的数都取反(除了符号位以外 0->1 1->0)
负数的补码 负数的补码就是在源码的反码的基础上+1。
补码的设计目的:(负数 四则运算用的)
1.使符号位能够与有效的值的部分一起来参与运算(+),从而简化运算的规则。(印度人发明的)
2.使得减法运算 转化为 加法运算。
(这些的转换都是在计算机的最底层来实现的)。
-5 这个数的源码
第一步 :|-5| = 5 这个数的2进制数 0000 0101
第二步 :把最高位置成符号位 1000 0101(2)
练习:-28 这个数的源码是多少?
第一步:|-28| = 28 0001 1100(2)
第二步:1001 1100(2) 表示了-28的源码
-5 这个数的反码
第一步 :|-5| = 5 这个数的2进制数 0000 0101
第二步 :把最高位置成符号位 1000 0101(2) 源码
在源码的基础上 保持符号位不变
1000 0101(2) 源码 或1000 0101B
1111 1010(2) 反码 ---->除了符号位 以外的其它的位上的数
练习:-28 这个数的反码是多少?
第一步:|-28| = 28 0001 1100(2)
第二步:1001 1100(2) 表示了-28的源码
1110 0011(2) 或 1110 0011B 反码