当前位置:编程学习 > C#/ASP.NET >>

问一个VB的小问题

在VB中如何构造一个16位的负整数? --------------------编程问答--------------------


        Dim a As String = (-1 * (Int((9 * Rnd()) + 1))).ToString
        Dim i As Integer = 0

        Do While i < 3
            Dim b As String = Rnd()
            If Len(b) > 7 Then
                a = a & b.Substring(2, 5)
                i = i + 1
            End If

        Loop
        Dim c As Long = a
        MsgBox("个是一个随机的16位负数:" & c)



--------------------编程问答-------------------- Short数据类型
保存 16 位(2 字节)有符号整数,值的范围为 -32,768 到 32,767。 --------------------编程问答-------------------- 谢谢指正,不过按照你的意思short这个类型不能存16位数呀,报错为溢出,请老大解释,谢谢,不知我这样理解你的意思对否
按照你的意思,代码改成

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim a As String = (-1 * (Int((9 * Rnd()) + 1))).ToString
        Dim i As Integer = 0

        Do While i < 3
            Dim b As String = Rnd()
            If Len(b) > 7 Then
                a = a & b.Substring(2, 5)
                i = i + 1
            End If

        Loop
        Dim c As short = a'这里报错为溢出
        MsgBox("个是一个随机的16位负数:" & c)

    End Sub
--------------------编程问答-------------------- 你直接定义一个UShort,你就当他是负数不久可以了,不保存符号。如果用Short就只有15位。 --------------------编程问答-------------------- --------------------编程问答-------------------- 我自己也写了一段程序,不过经常出现-1~-255不能正常译码,显示为-1的现象,但-255~-32767段倒是没有问题
我是用VB6做的 --------------------编程问答-------------------- 学习了~~~ --------------------编程问答-------------------- 楼主问的是数值大小吗?还是数据类型?

内置类型包括有符号,有无符号
有符号的,表示的范围中,一半是正数,一半是负数 因此,最大值,会显得小


如果,只是要求数值的大小,可以使用其他类型
然后再处理的时候,检验大小,

不知道楼主说的是16个数字,还是16个二进制位? --------------------编程问答-------------------- 学习、 --------------------编程问答-------------------- 可能我描述的不大清楚,
我用VB6自己做了的解码函数,我的这个函数是用于串口通讯上的,将串口传送过来的数据帧中的两个byte合并成一个有符号整数,但是解码函数经常出现在-1~-255之间的数解码成-1,超过-255的数解码正确。
因此在这里向各位大侠请教一下 --------------------编程问答-------------------- 楼主,你可能理解错数值的表示了

你是把原来一个字节的2数何在一起了
但同时,他们的表示位也变了

先说下,一个Byte 表示的数是 0~255 共256个数  有符号的是 -128~127

那么2个Byte就是 256 ×256 个数 即65536

但是, 你要处理的并不是16位个数, 而是,前 8位 和后8位的
那么如果前8 位 为最小值 1的话
16个位则是 00000001 00000000 正好是 256,
也就是说, 如果你要处理第一8 位数值 都 大于256 的
换句话说, 后8位 都是小于256,或者倍数的(在某个区间,因为,还有256 前端分隔)

建议楼组重新检查一下函数, 如果很难处理2个字节数据,还是单独处理比较好
补充:.NET技术 ,  VB.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,