赞
踩
运算符是一种告诉编译器执行特定的数学或逻辑操作的符号。C++内置了丰富的运算符,并提供了以下类型的运算符:
在程序中,运算符是用来操作数据的,因此,这些数据也被称为操作数,使用运算符将操作数连接而成的式子称为表达式
。
表达式具有如下特点:
+、-、*、/、%、++、–
==、!=、>、<、>=、<=
&&、||、!
=、+=、-=、*=、/=、%=
运算符作用于位,并逐位执行操作。&、|和^的真值表如下所示:
p | q | p&q | p|q | p^q |
---|---|---|---|---|
0 | 0 | 0 | 0 | 0 |
0 | 1 | 0 | 1 | 1 |
1 | 0 | 0 | 1 | 1 |
1 | 1 | 1 | 1 | 0 |
运算符 | 描述 |
---|---|
sizeof | 返回变量的大小 |
Condition?X:Y | 条件运算符 |
, | 逗号运算符会顺序执行一系列运算。整个逗号表达式的值是以逗号分隔的列表中的最后一个表达式的值 。 |
.(点)和->(箭头) | 成员运算符用于类、结构体和共同体的成员 |
Cast | 强制转换运算符把一种数据类型转换为另一种数据类型。例如。int(2.2000)将返回2(不推荐使用,容易出错 ) |
& | 指针运算符&返回变量的地址。例如&a;将给出变量的实际地址 |
* | 指针运算符*指向一个变量。例如,*var将指向变量var |
//
开始,知道行末为止/*
开始,以*/
终止注释的一点原则和建议
1.好的命名和代码本身
就是最好的注释;如果代码本身很清楚,不需要额外加注释;
2. 在重要代码段,或复杂代码初先写注释再写代码
,这样思路更清晰,同时可以保证代码和注释的一致性
;
3. 注释不是越多越好,它是对代码的提示,如果要写就要清楚,并且保证和代码一致,如果更新了代码,请更新相应的注释
;
有没有一种办法,可以让你使用加法来计算减法
?
机器数
一个数在计算机中的二进制表示形式,叫做这个数的机器数
。
机器数是带符号的,在计算机中用一个数的最高位存放符号,正数为0,负数为1.
比如:
十进制数+3,就是00000000000000000000000000000011(32位)
十进制数-3,就是10000000000000000000000000000011(32位)
转化为 11111111111111111111111111111101(32位)
真值
真正的数学意义上的数值。
因为第一位是符号位,所以机器数的形式值就不等于真正的数值;
00000000000000000000000000000011 -> +3
11111111111111111111111111111101 -> -3
用一个函数
B
2
U
w
B2U_w
B2Uw(
B
i
n
a
r
y
t
o
U
n
s
i
g
n
e
d
Binary to Unsigned
BinarytoUnsigned)的缩写,长度为
w
w
w来表示:
B
2
U
w
(
x
⃗
)
=
⋅
∑
i
=
0
w
−
1
x
i
2
i
B2U_w(\vec x) \stackrel{\cdot}{=}\displaystyle \sum^{w-1}_{i=0}{x_i2^i}
B2Uw(x
)=⋅i=0∑w−1xi2i
其实就是将二进制转化为10进制,好理解!
用函数
B
2
T
w
B2T_w
B2Tw(
B
i
n
a
r
y
t
o
U
n
s
i
g
n
e
d
Binary to Unsigned
BinarytoUnsigned)
B
2
T
w
(
x
⃗
)
=
⋅
−
x
w
−
1
2
w
−
1
+
∑
i
=
0
w
−
2
x
i
2
i
B2T_w(\vec x) \stackrel{\cdot}{=}-x_{w-1}2^{w-1}+\displaystyle \sum^{w-2}_{i=0}{x_i2^i}
B2Tw(x
)=⋅−xw−12w−1+i=0∑w−2xi2i
举例:
B
2
T
4
(
[
0001
]
)
=
−
0
⋅
2
3
+
0
⋅
2
2
+
0
⋅
2
1
+
1
⋅
2
0
=
0
+
0
+
0
+
1
=
1
B2T_4([0001])=-0\cdot2^3+0\cdot2^2+0\cdot2^1+1\cdot2^0=0+0+0+1=1
B2T4([0001])=−0⋅23+0⋅22+0⋅21+1⋅20=0+0+0+1=1
B
2
T
4
(
[
0101
]
)
=
−
0
⋅
2
3
+
1
⋅
2
2
+
0
⋅
2
1
+
1
⋅
2
0
=
0
+
4
+
0
+
1
=
5
B2T_4([0101])=-0\cdot2^3+1\cdot2^2+0\cdot2^1+1\cdot2^0=0+4+0+1=5
B2T4([0101])=−0⋅23+1⋅22+0⋅21+1⋅20=0+4+0+1=5
B
2
T
4
(
[
1011
]
)
=
−
1
⋅
2
3
+
0
⋅
2
2
+
1
⋅
2
1
+
1
⋅
2
0
=
−
8
+
0
+
2
+
1
=
−
5
B2T_4([1011])=-1\cdot2^3+0\cdot2^2+1\cdot2^1+1\cdot2^0=-8+0+2+1=-5
B2T4([1011])=−1⋅23+0⋅22+1⋅21+1⋅20=−8+0+2+1=−5
B
2
T
4
(
[
1111
]
)
=
−
1
⋅
2
3
+
1
⋅
2
2
+
1
⋅
2
1
+
1
⋅
2
0
=
−
8
+
4
+
2
+
1
=
1
B2T_4([1111])=-1\cdot2^3+1\cdot2^2+1\cdot2^1+1\cdot2^0=-8+4+2+1=1
B2T4([1111])=−1⋅23+1⋅22+1⋅21+1⋅20=−8+4+2+1=1
对整数:直接安慰计算权重和
对负数:保留符号位,对后面每位取反+1
验证真值
//二进制转无符号整数
unsigned int B2U(unsigned int num)
{
return (unsigned int)(num);
}
//二进制转有符号整数
int B2T(int num)
{
return (int)(num);
}
我们在设计软件系统时总是希望软件系统尽可能很简单通用
。
于是人们希望在只有加法运算器的情况下设计一种方法能计算减法
?
注意:对于有符号的数,尽可能不要使用右移运算
,因为到底是逻辑右移还是算术右移取决于编译器!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。