admin 管理员组

文章数量: 1184232


2024年1月25日发(作者:oracle认证考点)

BCD编码详解

2008-01-11 15:16

BCD码

即BCD代码。Binary-Coded Decimal‎,简称BCD,称BCD码或二-十进制代码,亦称二进码十进数。是一种二进制的数字编码形式,用二进制编码的十进制代码。这种编码形式利用了四个位元来储存一个十进制的数码,使二进制和十进制之间的转换得以快捷的进行。这种编码技巧,最常用于会计系统的设计里,因为会计制度经常需要对很长的数字串作准确的计算。相对于一般的浮点式记数法,采用BCD码,既可保存数值的精确度,又可免却使电脑作浮点运算时所耗费的时间。此外,对于其他需要高精确度的计算,BCD编码亦很常用。

由于十进制数共有0、1、2、„„、9十个数码,因此,至少需要4位二进制码来表示1位十进制数。4位二进制码共有2^4=16种码组,在这16种代码中,可以任选10种来表示10个十进制数码,共有N=16!/(16-10)!约等于2.9乘以10的10次方种方案。常用的BCD代码列于末。

常用BCD编码方式

最常用的BCD编码,就是使用"0"至"9"这十个数值的二进码来表示。这种编码方式,在中国大陆称之为“8421码”。除此以外,对应不同需求,各人亦开发了不同的编码方法,以适应不同的需求。这些编码,大致可以分成有权码和无权码两种:

有权BCD码,如:8421(最常用)、2421、5421„

无权BCD码,如:余3码、格雷码„

以下为三种常见的BCD编码的比较。

余三码:就是对应的二进制数的值比它本身的值多3;

8421码:就是8,4,2,1对应的值都只有一个1.

十进数 8421-BCD码 余3-BCD码 2421-A码

(M10) D C B A C3 C2 C1 C0 a3 a2 a1 a0

0 0 0 0 0 0 0 1 1 0 0 0 0

1 0 0 0 1 0 1 0 0 0 0 0 1

2 0 0 1 0 0 1 0 1 0 0 1 0

3 0 0 1 1 0 1 1 0 0 0 1 1

4 0 1 0 0 0 1 1 1 0 1 0 0

5 0 1 0 1 1 0 0 0 0 1 0 1

6 0 1 1 0 1 0 0 1 0 1 1 0

7 0 1 1 1 1 0 1 0 0 1 1 1

8 1 0 0 0 1 0 1 1 1 1 1 0

9 1 0 0 1 1 1 0 0 1 1 1 1

常用BCD码

十进制数 8421码 5421码 2421码 余3码 余3循环码

0 0000 0000 0000 0011 0010

1 0001 0001 0001 0100 0110

2 0010 0010 0010 0101 0111

3 0011 0011 0011 0110 0101

4 0100 0100 0100 0111 0100

5 0101 1000 1011 1000 1100

6 0110 1001 1100 1001 1101

7 0111 1010 1101 1010 1111

8 1000 1011 1110 1011 1110

9 1001 1100 1111 1100 1010

-----------------------

什么是BCD码2006-3-19 13:24:45

bcd码也叫8421码就是将十进制的数以8421的形式展开成二进制,大家知道十进制是0~9十个数组成,着十个数每个数都有自己的8421码:

0=0000

1=0001

2=0010

3=0011

4=0100

5=0101

6=0110

7=0111

8=1000

9=1001

举个例子:

321的8421码就是

3 2 1

0011 0010 0001

具体:

bcd码是十位二进制码, 也就是将十进制的数字转化为二进制, 但是和普通的转化有一点不同, 每一个十进制的数字0-9都对应着一个四位的二进制码,对应关系如下: 十进制0 对应 二进制0000 ;十进制1 对应二进制0001 ....... 9

1001 接下来的10就有两个上述的码来表示 10 表示为00010000 也就是BCD码是遇见1001就产生进位,不象普通的二进制码,到1111才产生进位10000

举例:

某二进制无符号数11101010,转换为三位非压缩BCD数,按百位、十位和个位的顺序表示,应为__C__。

A.00000001 00000011 00000111 B. 00000011 00000001 00000111

C.00000010 00000011 00000100 D. 00000011 00000001 00001001

解:(1)11101010转换为十进制:234

(2)按百位、十位和个位的顺序表示,应为__C__。

BCD码运算

2008-01-11 15:40

二进制编码的十进制数,简称BCD码(Binarycoded Decimal). 这种方法是用4位二进制码的组合代表十进制数的0,1,2,3,4,5,6 ,7,8,9 十个数符。4位二进制数码有16 种组合,原则上可任选其中的10种作为代码,分别代表十进制中的0,1,2,3,4,5,6,7,8,9 这十个数符。最常用的BCD码称为8421BCD码,8.4.2.1 分别是4位二进数的位取值。 点击此处将给出十进制数和8421BCD编码的对应关系表。

1、BCD码与十进制数的转换

BCD码与十进制数的转换.关系直观,相互转换也很简单,将十进制数75.4转换为BCD码如:

75.4=(0111 (0101.0100)BCD 若将BCD码1000 0101.0101转换为十进制数如:

(1000 0101.0101)BCD=85.5

注意:同一个8位二进制代码表示的数,当认为它表示的是二进制数和认为它表示的是二进制编码的十进制数时,数值是不相同的。

例如:00011000,当把它视为二进制数时,其值为24;但作为2位BCD码时, 其值为18。

又例如00011100,如将其视为二进制数,其值为28,但不能当成BCD码,因为在8421BCD码中,它是个非法编码 .

2、BCD码的格式

计算机中的BCD码,经常使用的有两种格式,即分离BCD码,组合BCD码。

所谓分离BCD码,即用一个字节的低四位编码表示十进制数的一位,例如数82的存放格式为:

_ _ _1 0 0 0 _ _ _ _0 0 1 0 其中_表示无关值。

组合BCD码,是将两位十进制数,存放在一个字节中,例82的存放格式是1000

0010

3、BCD码的加减运算

由于编码是将每个十进制数用一组4位二进制数来表示,因此,若将这种BCD码直接交计算机去运算,由于

计算机总是把数当作二进制数来运算,所以结果可能会出错。例:用BCD码求38+49。

解决的办法是对二进制加法运算的结果采用"加6修正,这种修正称为BCD调整。即将二进制加法运算的结果修正为BCD码加法运算的结果,两个两位BCD数相加时,对二进制加法运算结果采用修正规则进行修正。修正规则:

(1)如果任何两个对应位BCD数相加的结果向高一位无进位,若得到的结果小于或等于9,则该不需修正;若得到的结果大于9且小于16时,该位进行加6修正。

(2)如果任何两个对应位BCD数相加的结果向高一位有进位时(即结果大于或等于16),该位进行加6修正.

(3)低位修正结果使高位大于9时,高位进行加6修正。

下面通过例题验证上述规则的正确性。

用BCD码求35+21 BCD码求25+37 用BCD码求38+49 用BCD码求42+95

用BCD码求91+83 用BCD码求94+7 用BCD码求76+45

两个组合BCD码进行减法运算时,当低位向高位有借位时,由于"借一作十六"与"借一作十"的差别,将比正确的结果多6,所以有借位时,可采用"减6修正 法"来修正.两个BCD码进行加减时,先按二进制加减指令进行运算,再对结果用BCD调整指令进行调整,就可得到正确的十进制运算结果。 实际上,计算机中既有组合BCD数的调整指令,也有分离BCD数的调整指令。另外,BCD码的加减运算,也可以在运算前由程序先变换成二进制数,然后由计 算机对二进制数运算处理,运算以后再将二进制数结果由程序转换为BCD码。

二、ASCII码

ASCII码是美国国家信息交换标准字符码(American Standard Code for

Information Interchange )的字头缩码。早期的ASCII码采用7位二进制代码对字符进行编码。它包括32个通用控制字符,10个阿拉伯数字,52个英文大,小字母,34个专用符 号共128个。7位ASCII代码在最高位添加一个“0”组成8位代码,正好占一个字节,在存储和传输信息中,最高位常作为奇偶校验位使用。扩展 ASCII码,即第八位不再视为校验位而是当作编码位使用。扩展 ASCII码有256个。

启动管理项——Bcdedit命令详解

Bcdedit位于X:Windowssystem32 "X:"为安装Vista的盘符。

储存操作指令

====================

/createstore创建一个新的空白启动配置数据文件。

bcdedit /createstore C:DataBCD 创建BCD启动配置数据文件储存到“C:DATA”文件夹。

/export 备份启动配置数据文件。

bcdedit /export "C:DataBCD Backup" 备份BCD启动配置文件到“C:Data”文件夹,并以“BCD

Backup”命名。

/import 还原启动配置数据文件。

bcdedit /import "C:DataBCD Backup" 从“C:Data”文件夹恢复BCD启动配置文件。

储存项目操作指令

====================

/copy 项目拷贝

操作系统启动项目的拷贝:

bcdedit /copy {cbd971bf-b7b8-4885-951a-fa03044f5d71} /d "Copy of entry"

/create 新建项目

创建操作系统载入程序项目的 NTLDR(Ntldr):

bcdedit /create {ntldr} /d "Earlier Windows OS Loader"

创建存储器磁碟另外的选择项项目:

bcdedit /create {ramdiskoptions} /d "Ramdisk options"

创建一个新的操作系统启动项目:

bcdedit /create /d "Windows Vista" /application osloader

创建一个新的调试器:

bcdedit /create {dbgsettings} /d "Debugger Settings"

/delete 删除项目

删除指定的操作系统项目:

bcdedit /delete {cbd971bf-b7b8-4885-951a-fa03044f5d71}

删除指定的操作系统项目但启动时不显示项目(彻底删除):

bcdedit /delete {cbd971bf-b7b8-4885-951a-fa03044f5d71} /cleanup

删除指定的操作系统项目但启动时显示项目:

bcdedit /delete {cbd971bf-b7b8-4885-951a-fa03044f5d71} /nocleanup

删除操作系统载入程序项目的 NTLDR:

bcdedit /delete {ntldr} /f

项目选择操作指令

====================

/deletevalue删除项目选择项。

删除启动管理的bootmgr选择项项目:

bcdedit /deletevalue {bootmgr} bootsequence

删除(WinPE)操作系统的数值开机项目:

bcdedit /deletevaluewinpe

删除来自指定的操作的 Windows PE 数值系统开机项目:

bcdedit /deletevalue {cbd971bf-b7b8-4885-951a-fa03044f5d71} winpe

/set 设定项目选择项数值。

设定操作系统“cbd971bf-b7b8-4885-951a-fa03044f5d71”引导分区“C”:

bcdedit /set {cbd971bf-b7b8-4885-951a-fa03044f5d71} device partition=C:

指定的操作系统引导文件“ windows system 32 ”:

bcdedit /set {cbd971bf-b7b8-4885-951a-fa03044f5d71} path

设定“NX”为“OptIn”:

bcdedit /set nxoptin

更改系统名称

默认XP系统名称在Vista启动管理器中是"earlier version of Windows",更改:

bcdedit /set {ntldr} Description "Windows XP Professional SP2"

默认Vista系统名称在Vista启动管理器中是"Microsoft Windows",更改:

bcdedit /set {current} Description "Windows Vista 5456"

输出控制指令

====================

/enum 在储存中的列表项目。

列出所有的操作系统载入程序启动项目:

bcdedit /enum OSLOADER

列出所有的启动管理项目:

bcdedit /enum BOOTMGR

列出默认的启动项目:

bcdedit /enum {default}

列出指定的操作系统启动项目:

bcdedit /enum {b38a9fc1-5690-11da-b795-e9ad3c5e0e3a}

/v 列出所有活动的项目

bcdedit /enum ACTIVE /v

启动管理控制指令

====================

/bootsequence设定启动列表顺序。

设定二个操作系统项目和启动顺序:

bcdedit /bootsequence {802d5e32-0784-11da-bd33-000476eba25f}

{cbd971bf-b7b8-4885-951a- fa03044f5d71} {ntldr}

加入操作系统项目为启动列表最后项:

bcdedit /bootsequence {802d5e32-0784-11da-bd33-000476eba25f} /addlast

/default 设定默认启动项目。

设定默认启动项目:

bcdedit /default {cbd971bf-b7b8-4885-951a-fa03044f5d71}

设定默认启动操作系统程序为 NTLDR:

bcdedit /default {ntldr}

/displayorder设定哪一个系统启动显示多启动画面。

设定二个操作系统项目和在启动管理显示命令中被建立操作系统载入的程序 NTLDR:

bcdedit /displayorder {802d5e32-0784-11da-bd33-000476eba25f}

{cbd971bf-b7b8-4885-951a-fa03044f5d71} {ntldr}

把指定的操作系统项目加入启动管理显示命令结束:

bcdedit /displayorder {802d5e32-0784-11da-bd33-000476eba25f} /addlast

/timeout 设定启动暂停数值。

/toolsdisplayorder 设定命令在哪一个启动管理显示工具画面。

设定二个工具项目和内存诊断在那启动管理工具显示命令:

bcdedit /toolsdisplayorder {802d5e32-0784-11da-bd33-000476eba25f}

{cbd971bf-b7b8-4885-951a-fa03044f5d71} {memdiag}

把指定的工具项目加入启动的结束管理工具显示命令:

bcdedit /toolsdisplayorder {802d5e32-0784-11da-bd33-000476eba25f} /addlast

为一个启动应用程序控制紧急处理服务的指令

====================

/bootems

开启启动管理紧急处理服务:

bcdedit /bootems {bootmgr} ON

/ems

为目前的操作系统启动项目 EMS 开启:

bcdedit /ems ON

/emssettings设定紧急处理服务参数。

设定 EMS 参数使用基本输出入系统设定:

bcdedit /emssettings BIOS

实际上,大家打开命令提示符,输入bcdedit /? 同样可以获得更详尽的帮助:

BCDEDIT - 启动配置数据存储编辑器

命令行工具用于修改启动配置数据存储。

启动配置数据存储包含启动配置参数并

控制操作系统的启动方式。这些参数以前位于

文件中(在基于 BIOS 的操作系统中)或位于稳定

RAM 项中(在基于可扩展固件接口的操作系统中)。可以

使用 在启动配置数据存储中添加、删除、

编辑和附加项。

有关命令和选项的详细信息,请键入 /? 。例如,若要显示有关 /createstore命令的详细信息,请键入:

/? /createstore

有关本帮助文件中按字母顺序排列的主题列表,请运行 "bcdedit /? TOPICS"。

对存储执行的命令

================================

/createstore 新建空的启动配置数据存储。

/export 将系统存储的内容导出到文件。以后

可以使用该文件还原系统存储的状态。

/import 使用 /export 命令创建的备份文件来

还原系统存储的状态。

/sysstore 设置系统存储设备(仅影响 EFI 系统,

在重新启动后不再有效,且仅用于

系统存储设备不确定的情况下)。

对存储中的项执行的命令

===========================================

/copy 复制存储中的项。

/create 在存储中新建项。

/delete 删除存储中的项。

运行bcdedit /? ID 可获得有关这些命令使用的标识符的信息。

对项选项执行的命令

======================================

/deletevalue 删除存储中的项选项。

/set 设置存储中的项选项值。

运行bcdedit /? TYPES 可获得这些命令使用的数据类型的列表。

运行bcdedit /? FORMATS 可获得有效数据格式的列表。

控制输出的命令

============================

/enum 列出存储中的项。

/v 命令行选项,完整显示项标识符,

而不是使用已知标识符的名称。

单独使用命令 /v 可完整显示活动类型

的项标识符。

单独运行 "bcdedit" 等同于运行 "bcdedit /enum ACTIVE"。

控制启动管理器的命令

======================================

/bootsequence 为启动管理器设置一次性启动序列。

/default 设置启动管理器将使用的默认项。

/displayorder 设置启动管理器显示多重引导菜单

的顺序。

/timeout 设置启动管理器的超时值。

/toolsdisplayorder 设置启动管理器显示工具菜单

的顺序。

控制启动应用程序紧急管理服务的命令

==========================================================================

/bootems 启用或禁用启动应用程序的

紧急管理服务。

/ems 启用或禁用操作系统项的

紧急管理服务。

/emssettings 设置全局紧急管理服务参数。

控制调试的命令

==============================

/bootdebug 启用或禁用启动应用程序的启动调试。

/dbgsettings 设置全局调试程序参数。

/debug 启用或禁用操作系统项的内核

调试。

/hypervisorsettings 设置虚拟机管理程序的参数。


本文标签: 启动 二进制 项目