关于量化位数和AD转换精度的分析
提出的问题:
(梦的边缘(注:不是梦的边缘,_))
private Sub Form _ Click()
Dim sum As Integer,i As Integer,j As Integer
sum = 0
For I = 0到1
sum = sum + 1
For j = 0到3
如果不是(j Mod 2)则sum = sum+1
Next j
Next I
Print " sum = ";为什么sum
End Sub
运行结果sum=10而不是sum=6?
答:
这是一个相当微妙的话题!
我们先来看看:
打印Not (0),Not(-1),Not(1)
运行结果是什么。
估计有网友会做出:
0、-1和1转换为布尔值,分别为false、true、true和true。
因此,结果是:真假假
但实际上,运行结果是:
-1 0 -2
为什么?
原来这是Not的一种特殊用法。
当Not为数值时,在按位运算前会自动舍入。
以Not(0)为例,
0二进制是:0000000,那么Not(0)将对二进制取反,
是:11111111,第一位是1,是负数,
补码11111111代表什么数?
用补码求负数绝对值的原码。规则是:减一,每个数字反过来。
Get: 0000001是1。
0条评论