用2辗转相除至结果为1
将余数和最后的1从下向上倒序写 就是结果 例如302
302/2 = 151 余0 151/2 = 75 余1 75/2 = 37 余1 37/2 = 18 余1 18/2 = 9 余0 9/2 = 4 余1 4/2 = 2 余0
2/2 = 1 余0
故二进制为100101110
二进制转十进制
从最后一位开始算,依次列为第0、1、2...位 第n位的数(0或1)乘以2的n次方 得到的结果相加就是答案 例如:01101011.转十进制: 第0位:1乘2的0次方=1 1乘2的1次方=2 0乘2的2次方=0 1乘2的3次方=8 0乘2的4次方=0 1乘2的5次方=32 1乘2的6次方=64 0乘2的7次方=0 然后:1+2+0
+8+0+32+64+0=107. 二进制01101011=十进制107.
1.二进制与十进制的转换
(1)二进制转十进制
方法:\"按权展开求和\" 例:
(1011.01)2 =(1×23+0×22+1×21+1×20+0×2-1+1×2-2)10 =(8+0+2+1+0+0.25)10 =(11.25)10
(2)十进制转二进制
· 十进制整数转二进制数:\"除以2取余,逆序输出\" 例: (89)10=(1011001)2
2 89
2 44 …… 1 2 22 …… 0 2 11 …… 0 2 5 …… 1 2 2 …… 1 2 1 …… 0 0 …… 1 · 十进制小数转二进制数:\"乘以2取整,顺序输出\" 例:
(0.625)10= (0.101)2 0.625 X 2 1.25 X 2 0.5 X 2 1.0
2.八进制与二进制的转换
例:将八进制的37.416转换成二进制数: 37 . 4 1 6
011 111 .100 001 110
即:(37.416)8 =(11111.10000111)2 例:将二进制的10110.0011 转换成八进制:
0 1 0 1 1 0 . 0 0 1 1 0 0 2 6 . 1 4
即:(10110.011)2 =(26.14)8
3.十六进制与二进制的转换
例:将十六进制数5DF.9 转换成二进制: 5 D F . 9
0101 1101 1111.1001
即:(5DF.9)16 =(10111011111.1001)2
例:将二进制数1100001.111 转换成十六进制: 0110 0001 . 1110 6 1 . E
即:(1100001.111)2 =(61.E)16
1.二进制与十进制的转换
(1)二进制转十进制
方法:\"按权展开求和\" 例:
(1011.01)2 =(1×2^3+0×2^2+1×2^1+1×2^0+0×2^-1+1×2^-2)10 =(8+0+2+1+0+0.25)10 =(11.25)10
(2)十进制转二进制
· 十进制整数转二进制数:\"除以2取余,逆序输出\" 例: (89)10=(1011001)2
2 89
2 44 …… 1 2 22 …… 0 2 11 …… 0 2 5 …… 1 2 2 …… 1 2 1 …… 0 0 …… 1 · 十进制小数转二进制数:\"乘以2取整,顺序输出\" 例:
(0.625)10= (0.101)2 0.625 X 2 1.25 X 2 0.5
X 2 1.0
2.八进制与二进制的转换
例:将八进制的37.416转换成二进制数: 37 . 4 1 6
011 111 .100 001 110
即:(37.416)8 =(11111.10000111)2 例:将二进制的10110.0011 转换成八进制:
0 1 0 1 1 0 . 0 0 1 1 0 0 2 6 . 1 4
即:(10110.011)2 =(26.14)8
3.十六进制与二进制的转换
例:将十六进制数5DF.9 转换成二进制:
5 D F . 9
0101 1101 1111.1001
即:(5DF.9)16 =(10111011111.1001)2
例:将二进制数1100001.111 转换成十六进制: 0110 0001 . 1110 6 1 . E
即:(1100001.111)2 =(61.E)16
2|评论
2006-02-24 13:30wakjjf| 三级
十进制转二进制用除2的短除法,二进制转十进制用乘幂法,比如4,短除2,余数为0,再除2,余数为0,,直至为剩余数字为1,逆序写上去,为100,100=1*2^2+0*2^0+0*2^0=4
0|评论
2006-02-24 13:31HackerKinsn| 四级
一、二进制数转换成十进制数
由二进制数转换成十进制数的基本做法是,把二进制数首先写成加权系数展开式,然后按十进制加法规则求和。这种做法称为\"按权相加\"法。
二、十进制数转换为二进制数
十进制数转换为二进制数时,由于整数和小数的转换方法不同,所以先将十进制数的整数部分和小数部分分别转换后,再加以合并。 1. 十进制整数转换为二进制整数
十进制整数转换为二进制整数采用\"除2取余,逆序排列\"法。具体做法是:用2去除十进制整数,可以得到一个商和余数;再用2去除商,又会得到一个商和余数,如此进行,直到商为零时为止,然后把先得到的余数作为二进制数的低位有效位,后得到的余数作为二进制数的高位有效位,依次排列起来。
2.十进制小数转换为二进制小数
十进制小数转换成二进制小数采用\"乘2取整,顺序排列\"法。具体做法是:用2乘十进制小数,可以得到积,将积的整数部分取出,再用2乘余下的小数部分,又得到一个积,再将积的整数部分取出,如此进行,直到积中的小数部分为零,或者达到所要求的精度为止。
然后把取出的整数部分按顺序排列起来,先取的整数作为二进制小数的高位有效位,后取的整数作为低位有效位。
With MSChart1
'显示一个具有 8 行 8 列数据的三维图表。 .ChartType = VtChChartType3dBar .ColumnCount = 8 .RowCount = 8
For column = 1 To 8 For row = 1 To 8
.Column = column .Row = row .Data = row * 10 Next row Next column
'将图表作为图例的背景。 .ShowLegend = True
.SelectPart VtChPartTypePlot, index1, index2, _ index3, index4 .EditCopy
.SelectPart VtChPartTypeLegend, index1, _ index2, index3, index4 .EditPaste End With
Sum 函数
返回包含在指定查询字段中一组值的总计。 语法
Sum(expr)
其中 expr 代表一个字符串表达式,它或者标识一个字段,该字段包含要计算的数据;或者是一个表达式,它使用此字段中的数据来执行计算。 expr中的运算对象可能包括一个表字段名,一个常数或一个函数(可能是内在的,也可能是用户自定义的,但不是 SQL 合计函数)。 说明
Sum 函数求字段中值的总和。例如,可用 Sum 函数计算货运的总费用。
Sum 函数会忽略包含 Null 字段的记录。下列示例显示如何计算产品的 UnitPrice (单价)及 Quantity (数量)字段的合计: SELECT
Sum(UnitPrice * Quantity)
AS [Total Revenue] FROM [Order Details];
可以在一个查询表达式之中使用 Sum 函数。你也可以在具备 SQL 特性的 QueryDef 对象中或在创建基于SQL查询的 Recordset 对象时使用这一表达式。 Sum 函数示例
此示例使用订单表计算对于送货至英国订单的合计销售额。
此示例调用过程 EnumFields 过程,且可以在 SELECT 语句示例中找到该过程。 Sub SumX()
Dim dbs As Database, rst As Recordset
' 在您的计算机中修改此行使其正确指到 Northwind 的路径。 Set dbs = OpenDatabase(\"Northwind.mdb\") ' 对运费超过 $100 的订单,
'对于送货到英国的订单计算总销售额。 Set rst = dbs.OpenRecordset(\"SELECT\" _ & \" Sum(UnitPrice*Quantity)\" _
& \" AS [Total UK Sales] FROM Orders\" _ & \" INNER JOIN [Order Details] ON\" _
& \" Orders.OrderID = [Order Details].OrderID\" _ & \" WHERE (ShipCountry = '英国');\") ' populateRecordset。 rst.MoveLast
' 调用 EnumFields 来打印记录集的内容。 '传递记录集对象和要求的字符宽度。 EnumFields rst, 15 dbs.Close End Sub
配置文件的应用
为了方便用户使用和使系统具有灵活性,大多数Win-dows应用程序将用户所做的选择以及各种变化的系统信息记录在初始化(INI)文件中。因此,当系统的环境发生变化时,可以直接修改INI文件,而无需修改程序。由此可见,INI文件对系统功能是至关重要的。本文将介绍采用VisualBasicforWindows(下称VB)开发Windows应用程序时如何读写INI文件。
INI文件是文本文件,由若干部分(section)组成,在每个带括号的标题下面,是若干个以单个单词开头的关键词(keyword)和一个等号,每个关键词会控制应用程序某个功能的工作方式,等号右边的值(value)指定关键词的操作方式。其一般形式如下:
[section1]
keyword1=valuel keyword2=value2 ……
[section2]
keyword1=value1 keyword2=value2 ……
其中,如果等号右边无任何内容(即value为空),那就表示Windows应用程序已为该关键词指定了缺省值,如果在整个文件中找不到某个关键词(或整个一部分),那同样表示为它们指定了缺省值。各个部分所出现的顺序是无关紧要的,在每一个部分里,各个关键词的顺序同样也无关紧要。
读写INI文件通常有两种方式:一是在Windows中用\"记事本\"(Notepad)对其进行编辑,比较简单,无需赘述;二是由Windows应用程序读写INI文件,通常是应用程序运行时读取INI文件中的信息,退出应用程序时保存用户对运行环境的某些修改。
关键词的值的类型多为字符串或整数型,应分两种情况读写。为了使程序具有可维护性和可移植性,最好把对INI文件的读写封装在一个模块(RWINI.BAS)中,在RWI-NI.BAS中构造GetIniS和GetIniN函数以及SetIniS和Se-tIniN过程,在这些函数和过程中需要使用WindowsAPI的\"GetPrivateprofileString\"、\"GetPrivateProfileInt\"和\"WritePrivateProfileString\"函数。
RWINI.BAS模块的程序代码如下:
在General-Declearation部分中声明使用到的WindowsAPI函数:
Declare Function GetprivateprofileString Lib\"Ker-nel\"(ByVallpAppName As String,ByVallpKeyName As String,ByVallpDefault As String,ByVal lpRetrm-String As String,ByVal cbReturnString As Integer,ByVal Filename As String)As Integer
Declare FunctionGetPrivatePfileInt Lib \"Kernel\"(ByVal lpAppName As String,ByVal lpKeyName As String,ByVal lpDefault As Integer,ByVal Filename As String)As Integer
Declare FuncitonWritePrivateprofileString Lib \"Kernel\"(ByVal
lpApplicationName As String,ByVal lpKeyName As String,ByVal lpString As String,ByVal lplFileName As String)As Integer
Function GetIniS(ByVal SectionName As String,ByVal KeyWord As String,ByVal DefString As String)As String
Dim ResultString As String * 144,Temp As Integer Dims As String,i As Integer
Temp%=GetPrivateProfileString(SectionName,KeyWord,\"\",ResultString,144,AppProfileName()) ‘检索关键词的值
IfTemp%>0Then‘关键词的值不为空 s=\"\"
Fori=1To144
IfAsc(Mid$(ResultString,I,1))=0Then ExitFor Else
s=s&Mid$(ResultString,I,1)
EndIf Next Else
Temp%=WritePrivateProfilesString(sectionname,KeyWord,DefString,ppProfileName())
‘将缺省值写入INI文件
s=DefString EndIf
GetIniS=s EndFunction
FunctionGetIniN(ByValSectionNameAsString,ByValKeyWordAsString,
ByValDefValue
AsIneger)AsInteger
DimdAsLong,sAsString
d=DefValue
GetIniN=GetPrivateProfileInt(SectionName, KeyWord,DefValue,ppProfileName()) Ifd<>DefValueThen
s=\"\"&d
d=WritePrivateProfileString(SectionName, KeyWord,s,AppProfileName())
EndIf
EndFunction
SubSetIniS(ByValSectionNameAsString,BtVaKeyWordAsString,ByValValStr AsString) Dimres%
res%=WritePrivateprofileString(SectionName,KeyWord,ValStr,
AppProfileName()) EndSub
SubSetIniN(ByValSectionNameAsString,ByValKeyWordAsString,ByValValInt AsInteger) Dimres%,s$
s$=Str$(ValInt)
res%=WriteprivateProfileString(SectionName,KeyWord,s$,AppProfileName()) EndSub
SectionName为每一部分的标题,KeyWord为关键词,GetIniS和GetIniN中的DefValue为关键词的缺省值,SetIniS和SetIniN的ValStr和ValInt为要写入INI文件的关键词的值。为了能更好地说明如何使用以上函数和过程,下面举两个实例。
实例1:
开发应用程序通常要使用数据库和其它一些文件,这些文件的目录(包括路径和文件名)不应在程序中固定,而是保存在INI文件中,程序运行时由INI文件中读入。读入数据库文件的代码如下:
DimDatabasenameAsString
Databasename=GetIniS(\"数据库\",\"职工\",\"\")
IfDatabaseName=\"\"ThenDatabaseName=InputBox(\"请输入数据库《职工》的
目录\"),
App.Title)’也可通过\"文件对话框\"进行选择 OnErrorResumeNext
Setdb=OpenDatabas(DatabaseName) IfErr<>0Then
MsgBox\"打开数据库失败!\",MB-
ICONSTOP,App.Title:GotoErrorProcessing Else
SetIniS\"数据库\",\"职工\",DatabaseName EndIf
OnErrorGoTo0 …… 实例2:
为了方便用户操作,有时需要保存用户界面的某些信息,例如窗口的高度和宽度等。装载窗体时,从INI文件中读入窗体高度和宽度,卸载窗体时将窗体当前高度和宽度存入INI文件,代码如下:
Sub Form1_Load() ……
Forml.Height=GetIniN(\"窗体1\",\"高度\",6000) Form1.Width=GetIniN(\"窗体1\",\"高度\",4500) EndSub ……
Sub Form1_Unload() ……
SetIniN\"窗体1\",\"高度\",Me.Height SetIniN\"窗体1,\"宽度\",Me.Width …… End Sub
因篇幅问题不能全部显示,请点此查看更多更全内容