VB 里面的-1 和 65535的疑惑???

作者&投稿:慕怨 (若有异议请与网页底部的电邮联系)
vb 有没有类型的范围是 0-65535 的?~

1,定义变量时加上对应前缀,以后读程序时清晰明了,增强程序的可读性.例如intN,一看就知道是个integer,blnFlag就知道是个boolean型.

2,类型符就我感觉作用不大,例如定义dim i%虽然跟dim i as integer效果一模一样,都是定义一个整型变量i,但是程序的可读性差很多,也省不了几次键盘操作,再说vb都有自动提示,写完整都很快.不过用来装13很管用,看起来很diao的样子.

3,常用的还是要记住的,例如整型最大到32767,如果你运算结果超过这个,就必须把结果定义成其他更大的类型,例如长整型,免得溢出.

4,取值范围的确跟位数有关,例如整型,16位,就是2^16=65536,无符号整数就是0-65535;如果是有符号的,正负各分一半就是-32768-32767了.长整型是32位,计算办法跟上面类似.但是单精度和双精度由于计数法则类似科学计数法的a*2^b,电脑只需要知道a和b就可以经过运算的表示的数值,32位中有些位被用来表示指数b,所以描述的范围更大了.

是因为超过数据类型能表示的最大数了。
系统提供的数据类型都会有限制的,要看你的程序具体是什么需求,使用long、single、double类型可以提供更大的数,但还是有限制,如果真要无限制(其实也受可用内存空间限制),可以自己定义类型。比如使用数组,存储这个数,自己实现各数组元素的进位和借位,数据满了,还可以REDIM。

用clng("&hffff"),只能转成长整形32位带符号数.结果是65535,目前我还没有找到更好的办法.
(我也很烦恼VB中没有无符号型,只有Byte是无符号的)

如果不是数值计算的问题,可以不用考虑符号问题,因为他们在内存中是同样的.

如果你真的要无符号型,只有一个办法,Byte数组,然后定义一个在这个数组上的运算了.实在不行转为字符,然后取出每一段转为字节型,再分别运算.

Visual Studio 2005的VB支持ULong类型
http://msdn2.microsoft.com/zh-cn/library/s2dy91zy(VS.80).aspx

直接打65535不就行了


天全县17588073137: VB 里面的 - 1 和 65535的疑惑??? -
白丁替诺: 用clng("&hffff"),只能转成长整形32位带符号数.结果是65535,目前我还没有找到更好的办法. (我也很烦恼VB中没有无符号型,只有Byte是无符号的)如果不是数值计算的问题,可以不用考虑符号问题,因为他们在内存中是同样的.如果你真的要无符号型,只有一个办法,Byte数组,然后定义一个在这个数组上的运算了.实在不行转为字符,然后取出每一段转为字节型,再分别运算.Visual Studio 2005的VB支持ULong类型 http://msdn2.microsoft.com/zh-cn/library/s2dy91zy(VS.80).aspx

天全县17588073137: 关于数电的65535和 - 1的换算 -
白丁替诺: 因为在二进制里你选的是”单字“,所以就按”单字“的位数处理.字节是8位的,也就是二进制表示时最多可以8位的0或1. 单字是16位,2个字节. 双子32位,4个字节.计算机里的负数用补数表示. 就是把正数的二进制,各位...

天全县17588073137: 如何在文本框内输出0 -- 65535的数字? -
白丁替诺: Private Sub Command1_Click() Dim i As Long, s As String For i = 0 To 65535 If i Mod 500 = 0 Then Text1.Text = Text1.Text & s: DoEvents: s = "" s = s & i & vbCrLf Next End Sub 这样至少不会卡死.速度一般.

天全县17588073137: VC环境中整形数据的字节数超出范围怎样计算例如32770输出?V
白丁替诺: 对于一个两个字节的整数,它在内存中占的空间是16位,可以表示2^16=65536种不同的值,如果我们不考虑符号的话,只把他们当成二进制的数,那么恰为0~65535间的所有整数.而我们还要表示负数,一般用补码完成一个0~65535间的非负整数到一个有符号整数的映射的,说白了就是同余,比如-1=65535(mod 65536),所以65535的二进制表示1111111111111111就表示-1.用补码是很方便的,因为同余的关系嘛,加减乘除都不需要转化,直接计算就可以了.还有一些不太方便的编码,比如原码,反码,参见相关书籍. 顺便说一下,现在好多编译器里的int都是32位的,即int和long int是一样的.

天全县17588073137: 短整型变量的取值范围为什么是 - 32768~32767,为什么无符号短整型变量的取值范围是0~65535 -
白丁替诺: 1. 无符号短整型变量说明它是非负数,所以最高位不是符号为,而是数据;因为短整型是2字节,16位的,所以表示的范围就是 0~0xFFFF 即 0~(2^16-1),也就是0~65535. 2. 而短整型变量说明它是有符号位的,即最高位是符号为,为0是整数,为1是负数;所以范围是:-32768~32767

天全县17588073137: VB 字符串数组最大容量 -
白丁替诺: 没有问题的.变长字符串最多可包含大约 20 亿(2^31)个字符.定长字符串可包含 1 到大约 64K ( 2^16 ) 个字符.1.字符串是一个字符序列,必须用双引号括起来 2.说明: 双引号为分界符,输...

天全县17588073137: vb中 $ 的含义 -
白丁替诺: 数据类型:字符型 关键字:String 前缀:str 占字节数:与字符长度有关(0~65535个字符) 希望我的回答能给您带来帮助,谢谢!

天全县17588073137: C++中, - 1输出成65535,应该如何变回原来的 - 1输出 -
白丁替诺: 这要涉及到数据在内存中的存储形式(二进制)-1在内存中以补码形式存储11111111,转换成十进制就是65535

天全县17588073137: vb中的定长字符串最大长度 -
白丁替诺: 2^16=65536这里有一个计数的规则问题我们认为10进制是1-10,因为人类对0的认识要晚许多.但是其实0-9 是10进制的前10个数字,这样在运算时更容易.计算机中使用的2进制也是这样2^4=16实际是...

天全县17588073137: vb中整型是什么意思?? -
白丁替诺: 整数.Integer变量存储为 16位(2 个字节)的数值形式. 范围为 -32,768 到 32,767 之间.例如:1、2222、-4324等整数.VB如果设定了一个整形变量但是给它附了一个带小数点的值,那么VB会自动四舍五入,C则是直接忽略,这点需要注意.

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网