进制转换:一、进位计数制的基本概念
将数字符号按排列成数位,并遵照某种由低到高的进位方式计数表述数值的方法,称为计数制。
1.十进制
十进制计数由0,1,2,3,4,5,6,7,8,9共10个数字符号组成。相同数字符号在不同的数位上表示不同的数值,每个数位计满十就向高位进一 ,即“逢十进一”
2.八进制
“逢八进一”
3.二进制
“逢二进一”
4.十六进制
1,2,3,4,5,6,7,8,9,A,B,C,D,E,F
5.基数和权
J=2 22=4 21=2 20=1 2-1=0.5 2-2=0.25
J=8 82=64 81=8 80=1 8-1=0.125 8-2=0.015625
J=10 102=100 101=10 100=1 10-1=0.1 10-2=0.01
J=16 162=256 161=16 160=1 16-1=0.0625 16-2=0.00390625
二、数制之间的转换
计算机内部使用的数字符号只有0和1两个。也就是说,计算机内部使用的是二进制数,所有数值数据和非数值数据,都是有0和1这两个数字符号加以组合而成的,我们称之为“二进制代码”。
为了方便期间,常在数字后面加一个缩写字母后缀作为不同进制的数标识,各种进制数的后缀字母:
1.二进制与十进制的转换
(1)二进制转十进制
方法1:按权展开法 例如 : (1011.01)2
权 K3 K2 K1 K0 小数点 K-1 K-2
权值 8 4 2 1 0.5 0.25
系数 1 0 1 1 0 1
对于值 8 0 2 1 0 0.25
结果8+0+2+1+0+0.25=11.25
(2)十进制转二进制
方法1:按权展开法
类似于拼凑出合适的数字,例如(89)10
处系数为1。剩余25-16=9。23=8,20=1
权 K7 K6 K5 K4 K3 K2 K1 K0
权值 128 64 32 16 8 4 2 1
系数 1 1 1 1
则结果为(1011001)2
方法2:
十进制整数转二进制数: “除2取余,逆序输出”
例如:(89)10 =(1011001)2
十进制小数转二进制数: “乘2取整,顺序输出”
例如:(0.625)10 =(0.101)2
2.八进制与二进制的转换
(1)八进制转二进制
每一个八进制的数都表示成一个三位二进制
方法:把每一位按权展开法
例如:(37.416)8=(11111.10000111)2
八进制 3 7 . 4 1 6
二进制 011 111 100 001 110
把高位和低位的0去掉后就是(11111.10000111)2
(2)二进制转八进制
例如:(10110.0011)2
方法:每三位二进制组成一位八进制
二进制 010 110 . 001 100
八进制 2 6 1 4
三位为一组,不足三位的补0
3.十六进制与二进制的转换
(1)十六进制进制转二进制
例如:(5DF.9)16=(10111011111.1001)2
十六进制 5 D F . 9
二进制 0101 1101 1111 . 1001
把高位和低位的0去掉后就是(10111011111.1001)2
(2)二进制进制转十六进制
方法:从小数点开始往左往右每四位组成一个十六进制
例如:(1100001.111)2
二进制 0110 0001 . 1110
十六进制 6 1 E
4.八进制与十进制的转换
把这个八进制的最后一位乘上80,倒数第二位81,一直乘到最高位,然后把各项乘积相加,结果即为十进制。
(36)8= 381 + 680 =24+6 =(30)10
原码补码,反码:
一、数的原码、补码和反码
1.机器数与真值
在计算机中,表示数值的数字符号只有0和1两个数码,我们规定最
高位为符号位,并用0表示正数符号,用1表示负数符号。这样,机器中的数值和符号全“数码化”了。为了简化机器中数据的运算操作,人们采用了原码、补码、反码及移码等几种方法对数值位和符号位统一进行编码。为区别起见,我们将在机器中的这些编码表示成为机器 数(如10000001)。而将原来一般书写表示的数称为机器数的真值(如-0000001)。
2.原码表示法
原码表示法是一种简单的机器数表示法,即符号位和数值表示法。设x
为真值,则[x]原为机器数表示。
3.反码表示法
正数的反码就是其真值本身,负数的反码,只需对符号位以外各位按位“求反”(0变1,1变0)即可。
4.补码表示法
负数用补码表示时,可以把减法转化为加法。正数的补码就是其本身,负数的补码是符号位为1,数值各位取反(0变成1,1变成0),最低位加1。
结论:
真值 原码 反码 补码
正数 0+本身 0+本身 0+本身
负数 1+本身 1+各位取反 1+各位取反后最低位+1
注意: 真值0的原码和反码表示不唯一,而补码的表示是唯一的,而补码表示是唯一的,即:
[+0]原=0000…0, [-0]原=1000…0
[+0]反=0000…0, [-0]反=1111…1
[+0]补 = [-0]补=000…0
5.编码及其表示范围
不同的编码表示的整数范围是这样的(已N位二进制位)
原码:0~2n-1(无符号),-2n-1 -1 ~ 2n-1 -1(有符号)
反码:-2n-1 -1 ~ 2n-1 -1(不存在无符号情况)
补码:-2n-1 ~ 2n-1 -1(不存在无符号)
补码表示的范围最大。现在以8位二进制为例说明如下:
原码:00000000 ~11111111 即:0~255(无符号)
反码:10000000 – 01111111 即
补码:1000000~01111111 即
如果没有具体说明编码形式,则计算机中N位二进制无符号数的范围是0~2n-1-1;有符号数的范围-2n-1 ~ 2n-1 -1
以8位有符号整数为例子:
原码:若X为正数,则最高位(符号位)为0,其余按照二进制数排列;
若X为负数,则最高位为1,后面和正数原码一样。
例: +7:00000111, -7 : 10000111
反码:若X为正数,则反码与原码相同
若X为负数,则将原码除符号位取反。
例: -7 : 11111000
补码:反码+1
例: -7 : 11111001
二、数的定点表示和浮点表示
在计算机中,小数点一般有两种表示法:
:小数点固定在某一个位置的定点表示法。(定点计算机)
:小数点的位置可任意移动的浮点表示法。(浮点计算机)
定点表示法:机器中所有数的小数点位置是固定不变的,因而小数点
就不必使用记号表示出来。实际上,小数点的位置可以固定在任意位置上。
浮点表示法:在数的定点表示法,由于数的表示范围较窄,常常不能
满足各种数值问题的需要。为了扩大数的表示范围,方便用户使用,有些计算机常次啊用浮点表示法。表示一个浮点数,要用两部分:位数和阶码。尾数用以表示数的有效数值;阶码用以表示小数点在该数中的位置。
三、科学计数法
科学记数法是一种记数的方法。把一个数表示成a与10的n次幂相
乘的形式(1≤|a|<10,a不为分数形式,n为整数),这种记数法叫做科学记数法。当我们要标记或运算某个较大或较小且位数较多时,用科学记数法免去浪费很多空间和时间。
计算器或电脑表达10的幂是一般是用E或e,也就是1.99714E13=19971400000000。
逻辑运算一、介绍
逻辑运算又称布尔运算。布尔用数学方法研究逻辑问题,成功地建立了逻辑演算。他用等式表示判断,把推理看作等式的变换。这种变换的有效性不依赖人们对符号的解释,只依赖于符号的组合规律 。
二、计算机编程中的逻辑运算
1.运算优先级表
优先级 运算符 说明 结合性
1 :: 范围解析 自左向右
2 ++ -- 后缀自增/后缀自减
() 括号
[ ] 数组下标
. 成员对象
-> 指针
3 ++ -- 前缀自增/前缀自减 自右向左
* * 加 减
! ~ 逻辑非 / 按位取反
type 强制类型转换
* 取指针
& 取地址
sizeof() 某某的大小
4 .* ->* 成员对象选择,成员指针选择 自左向右
5 * / % 乘 除 取余
6 + - 加 减
7 < <= > >= 小于 小于等于, 大于,大于等于
8 !ERROR! illegal character '!' 等于 不等于
9 & 按位与
10 | 按位或
11 ^ 按位异或
12 && 与运算
13 || 或运算
14 ? : 三目运算符 自右向左
15 = 赋值
+= -= 相加后赋值/相减后赋值
*= /= %= 相乘/相除/取余 后赋值
<<= >>= 位左移/右移 后赋值
&= ^= |= 位与运算/异或运算/或运算 赋值
16 , 逗号
同一优先级的运算符,结合次序由结合方向所决定。简单记就是:
!> 算术运算符 > 关系运算符 > && > || > 赋值运算符。
或者:
算术运算 > 移位运算 > 关系运算 > 位运算 > 逻辑运算 > 赋值运算
2. 位运算符(区别于逻辑运算符)
符号 名称 说明 示例
& 按位与 把参与运算的两个数对应的二进制位想与,只有对应的二进制都是1时,结果才为1,否则为0 9&5中9可以写成00001001。5可以写成00000101,那么9&5的运算结果为0000 0001。输出为1
| 按位或 把参与运算的两个数对应的二进制位相或,也就是只要两个数中只要有一个为1,结果为1. 9|5中9可以写成00001001。5可以写成00000101,那么9|5的运算结果为0000 1101。输出为13
^ 按位异或 把参与运算的两个数对应二进制相异或,对应的二进制数组不相同时,结果为1,否则为0。 11=0,10=1,0^0=0 0^1=1 9|5中可以写成00001001^00000101 =00001100,结果是12
~ 按位取反 把运算数的各个二进制按位求反 ~9相当于 ~(00001001),结果是11110110
<< 左移 把<<左边的数的各二进制位向左移若干位。把<<右边的数是指定移动的位数,高位丢弃,低位补0。 a<<4,a=00000011(十进制3),左移4位是为00110000(十进制为48)
> > 右移 把>>左边的数的各二进制位向右移若干位。把<<右边的数是指定移动的位数, a=15,a>>2表示把00001111右移0000 0011(十进制3)
> > 3.逻辑运算符
符号 名称 说明 示例
&& 与 1 && 0 =0
|| 或 1 || 0 = 1
^ 异或 1 ^ 1 =0
! 非 ! 1 = 0
== 等于
> 大于
> < 小于
> != 不等于
> <= 小于等于
> = 大于等于
> 运算顺序: 非>与>或
举例
a=true, b= true, c =false
a || b && c
如果先 || 后 && 结果是0
如果先 && 后 || 结果是1
正确结果应该是1。
4. 运算规则与区别(真值表)
数据 运算
p q 且 或 非(p) 异或
真 真 真 真 假 假
真 假 假 真 假 真
假 真 假 真 真 真
假 假 假 假 真 假
一真或为真,一假且为假,
相同异或为0,不同为1
区别:
位运算一般指的是计算,类似于加减,结果是一个数字
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
三、数学中的逻辑运算
符号 名称
∧ 且
∨ 或
┐ 非
⊕ 异或
符号 名称
and 且
or 或
not 非
xor 异或
四、集合中逻辑运算(提高组)
符号 名称
∪ 并
∩ 交
– 差
~ 非
说明:
1.∪表示并运算(类似加法),指的是两个集合(例如A和B)里面所有的元素组成一个新集合。
A={1,2,4,8} B={2,5,6,7,3}
则A∪B={1,2,3,4,5,6,7}
2. ∩表示并运算,指的是两个集合(例如A和B)里面所有的元素重叠部分组成一个新集合
A={1,2,4,8} B={2,5,6,7}
则A∩B={2}
3. -表示减运算。就是A集合删去A∩B里元素的后组成一个新的集合。
A={1,2,4,8} B={2,5,6,7}
则A-B={1,4,8}
4. 表示非运算,比较特别,比如说是A
A={1,2,4,8},A无法直接求解,必须要有全集。假如全集是{1,2,3,4,5,6,7,8}。那么A就是全集删去A集合剩余的元素,组成 一个新的集合。结果是{3,5,6,7}