进制转换,原码反码补码
========================================
进制和补码
1.二进制
2.十六进制
3.八进制
4.数据在内存中的存储方式
1)正数和负数
2)原码,反码,补码
========================================
n进制的两个特点:
1、有基本数字n个
2、满n进一
十进制
1、十进制产生的原因:
十个手指;
2、十进制的规律
基本数字:0,1,2,3,4,5,6,7,8,9 (十个基本数字)
进位: 9+1=10
二进制
1、二进制的表示方式:
0 1
2、导出二进制的规律
基本数字:0,1(两个基本数字)
进位: 1+1= 0b10
3、为什么需要二进制:
1)供计算机内部使用(计算机里面以二进制存储数据)
2)为什么计算机内部要使用二进制
电路简单,由逻辑电路组成,开1,关0
逻辑,真,假;
4、十进制和二进制之间的转换
1)十进制转换为二进制
十进制转化为二进制
1、除以2取商继续除以2,一直除到商为0为止
2、最后将所有的余数从下往上逆序排
计算:11的二进制
11的二进制:
11➗2=5…..1 0位
5 ÷ 2=2……1 1位
2 ➗2=1….0 2位
1➗2 =0.。。1 3位
11 的二进制为:0b1011
计算15的二进制
15➗2=7.。。1
7➗2=3.。。。1
3➗2=1.。。。1
1➗2=0.。。。1
15 的二进制:ob1111
求 65的二进制?
1000001
65➗2=32.。。1 0位
32➗2=16.。。0 1位
16➗2=8.。。。0 2位
8➗2=4.。。。0 3位
4➗2=2.。。。。0 4位
2➗2=1.。。。0 5位
1➗2=0.。。。1 6位
ob1000001
(2)求1 ,2 ,4, 8, 16, 32, 64, 128的二进制并找出其规律
8开关
1:0000 0001 2^0
2:0000 0010
4:0000 0100
8:0000 1000
16:0001 0000
32:0010 0000
64:0100 0000
128:1000 0000
7654 3210
二进制转化为十进制:
十进制:1215 = 5*10^0+1*10^1+2*10^2+1*10^3=1215
3210
示例:0b101011
0b101011 = 1*2^0+1*2^1+0+1*2^3+0+1*2^5=
543210
101011 的十进制为:543210
练习:
1)0000 1010=1*2^1+1*2^3=2+8=10
=2+8=10
2)1001 1111 = 1+2+4+8+16+128=31+128=159
3)0001 0011 =1+2+16=19
4)0100 0100 =4+64=68
5)1111 1111 = 255
1111 1111
+ 1
———————
1 0000 0000
0 1000 0000 =128
256-1=255
=================================================
十六进制
1、十六进制的表示方式和范围
0x1234ff
十六进制数的规则
基本数字: 0,1,2,3,4,5,6,7,8,9, a,b,c,d,e,f (十六个基本数字)
0~9:
a,b,c,d,e,f : 10, 11 , 12 ,13, 14,15
进位:1+f=0x10
0b111111111000000111
0xffa
2.为什么需要十六进制
1)计算机以二进制存储数据,但二进制数太长了,
面对这么长的数进行思考或操作,
没有人会喜欢,用16进制或8进制可以解决这个问题。
2)不过,为什么偏偏是16或8进制,而不其它的,诸如9或20进制呢?
因为2、8、16,分别是2的1次方,3次方,4次方。这一点使得三种进制之间可以
非常直接地互相转换。8进制或16进制缩短了二进制数,但保持了二进制数的表达特点。
16, 2^4=2*2*2*2=16
8 ,2^3=2*2*2=8
3、十六进制与十进制的转换
1)十进制如何转化为十六进制?
十进100 -> 十六进制
1、除以16取商继续除以16,一直除到商为0为止
2、最后将所有的余数从下往上逆序排列,前面加上前缀 0x
则100的十六进制为:
100➗16=6.。。。4 0位
6 ➗ 16=0.。。。6 1位
100十六进制:0x64
练习:
1、将下列十进制数转换为十六进制
1)16 =0x10 2)32 = 0x20
3)64 =0x40 4)88 =0x58
2)如何将十六进制转换成十进制
例如:
0xabf = 15*16^0+11*16^1+10*16^2=
210
2、将下列十六进制数转换成十进制数
1)0xf = 15*16^0=15*1=15
2)0x10 = 1*16^1+0=16
3)0x123 = 1*16^2+2*16^1+3*16^0= 256+32+3=291
==========================================
10进制转换n进制:
除以n,取商继续除以n,一直除到商为0为止
将余数从下往上读;
n进制转换10进制:
按位展开:
x*n^位数+。。。+。。
===========================================
4、十六进制与二进制之间的转换
1)十六进制数转化为二进制数
每位十六进制数转换为4个二进制数
16=2^4
1位—>4位
0xf==15
0b1111==15
0x3 a
10==1010
3==0011
11 1010
0x3a 二进制为:0b111010
2)二进制数转化为十六进制数
从低位到高位,每4位一取,不足高位补0
4位—>1位
例如:
0011 1010
111010 的十六进制数:0x3a
0101 1110
5 14==e
1011110 的十六进制:0x5e
3、将下列二进制数转换成十六进制数
1)1010 =0xa
2)0001 1111 =0x1f
1 f
3)0001 0011 =0x13
1 3
4)0100 0000=0x40
4 0
5)1000 0001 1111=0x81f
8 1 f
4、将下列十六进制数转换为二进制
1位—>4位
1)0x4 5 = 1000101
0100 0101
2)0x1 5 9 = 101011001
0001 0101 1001
3)0x5 6 0=10101100000
0101 0110 0000
4)0x2 4 6 8 = 10010001101000
0010 0100 0110 1000
==================================================
八进制(非重点,不常用)
1、八进制的表示方式和规则
1)0
010 != 10
== 8
2)基本数字:0,1,2,3,4,5,6,7
进位: 1+7=010
2、二进制与八进制之间的转换
1)二进制转化为八进制
从低位到高位3位一取,不足补0
8=2^3
例如:
0b101 010
5 2
0b101010的八进制:052
2)八进制转化为二进制
每1位八进制转换成3位二进制
01 7
001111
017的二进制:0b1111
==================================================
5、位图概念
比特位 bit
0,1
关 开
1bit 1开关
8bit = 1Byte =1B 1字节
1KByte=1024Byte=2^10Byte
1MByte= 1MB=1024KByte
1GByte=1GB=1024MByte
0000 0000
1111 1111
1GB=1024MB=1024*1024KB=1024*1024*1024B
10 普通的整数
一个普通正数 至少需要32位
10
1010
32bit:
00000000 00000000 00000000 00001010
最高位 最低位 0位
-10
1010
最高位是符号位:正数:0,负数:1
10000000 00000000 00000000 00001010
1.一个普通的整数需要至少32个位表示
2.左边是高位,右边是低位
3.右边第1个二进制位称为第0位
计算机中的有符号数表示:
4.最高位称为符号位,0表示正数,1表示负数
计算机存储数据:
编码方式3种: 原码,反码,补码
正数:(三码相同) 原码=反码=补码
1
0000 0001 (原码)
0000 0001 (反码)
0000 0001 (补码)
负数:
-1
原码:最高位置1 : 1000 0001
反码:最高位保持不变,其余取反:1111 1110
补码:在反码基础上加1: 1111 1111
计算机存储都是有符号数
1
-1
计算机:没有减法器,有加法器
1-1=1+(-1)=
原码:
1 - 1 = 1 + (-1)= 0
1: 0000 0001
-1: 1000 0001
0000 0001
+ 1000 0001
———————————
1000 0010
=-2
反码:
1 - 1=1+(-1)=0
1: 0000 0001
-1: 1111 1110
0000 0001
+ 1111 1110
—————————————
1111 1111
== 1000 0000
== (-0)
0000 0000
0和-0
补码:
1 : 0000 0001
-1: 1111 1111
0000 0001
+ 1111 1111
————————————
10000 0000
0000 0000 ==0
带符号位进行运算,补码
计算机保存数据 :补码
数据在内存中的表示方式.
计算机的编码方式有三种:原码、反码和补码
1.补码
1)在计算机系统中,数值统一使用补码来表示和存储
2.为什么要使用补码
1)计算机只有加法器,将符号位一起参与运算
2)两个用补码表示的数相加时,如果最高位(符
号位)有进位,则进位被舍弃
3.计算机内部如何表示一个数
1)正数
1>正数的三码相同
2)负数
1>负数的原码
2>通过原码计算
3>正数负数在内存中真正的表示方式--补码
4>补码计算方式
负数:
1)符号位不变
2)剩余所有二进制数取反----反码
3)对反码进行+1操作
补码 ---- > 原码
1:—>0000 0001
-1 —>原码
1111 1111
1000 0001
6>补码转换为原码 (负数)
1)符号位不变
2)剩余所有二进制数取反
3)+1操作
练习:
1.计算以下数的二进制补码
1)-12, 2)-10, 3)-15, 4)-1
32bit
-12: 1100
10000000 00000000 00000000 00001100 -12原码
11111111 11111111 11111111 11110011 -12反码
11111111 11111111 11111111 11110100 (-12补码)
-10 : 1010
10000000 00000000 00000000 00001010 -10原码
11111111 11111111 11111111 11110101 -10 反码
11111111 11111111 11111111 11110110 (-10补码)
-15: 1111
10000000 00000000 00000000 00001111 -15原码
11111111 11111111 11111111 11110000 -15反码
11111111 11111111 11111111 11110001 -15补码
-1:
1000000 00000000 00000000 00000001 :-1原码
11111111 11111111 11111111 11111110 :-1反码
11111111 11111111 11111111 11111111 :-1补码
2.通过二进制计算下列数的结果
-5+6 = 1, -10+6=-4, 20+(-1)
32bit
-5:101
10000000 00000000 00000000 00000101 原码
11111111 11111111 11111111 11111010 反码
11111111 11111111 11111111 11111011 补码
11111111 11111111 11111111 11111011 (-5补码)
+ 00000000 00000000 00000000 00000110 (6补码)
——————————————————————————————————
1 00000000 00000000 00000000 00000001
== 00000000 00000000 00000000 00000001 ==1
-10+6 =-4
1010
10000000 00000000 00000000 00001010 原码
11111111 11111111 11111111 11110101 反码
11111111 11111111 11111111 11110110 补码
11111111 11111111 11111111 11110110 (-10补码)
+ 00000000 00000000 00000000 00000110 (6补码)
———————————————————————————————
1111111 11111111 11111111 11111100 (补码)
补码—》原码
最高位保持不变,其余取反,再+1:
10000000 00000000 00000000 00000100 (-4)
20+(-1)= 19
0000000 0000000 00000000 00010011 ==19