如何将输入得四位十进制数,转成BCD码,存在地址为3000H为起始地址的内存中。 (用c语言)?
二进制编码的十进制数,简称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码
这个应该还是比较详细滴
十进制转成BCD码是整数从右边开始,每个十进制数都用一组四位二进制数来表示。
压缩BCD码是分别由二进制数字来表示各十进制数位的二进制编码记法。需要注意的是每个十进制数都用一组四位二进制数来表示。不足4位者(十进制数0到7)加添0字开头,以凑足4位。比如将十进制数75转换为BCD码:7=0111,5=0101所以拼成BCD码的结果是:(0111 0101)BCD。
扩展资料:
计算机只能识别二进制数,但人们却熟悉十进制数,而不习惯用二进制数,因此,在计算机输入和输出数据时,经常采用十进制数。所不同的,这里的十进制数是用压缩BCD码来表示的。
压缩BCD码也广泛地运用于各种电子设备中。特别是在测试仪表以及另外那些具有十进制输入与/或输出的设备中.运用得更普遍。十进位数字计数器.万用表以及其它数字仪表,就是一类例子;数字电子表是另外一类例子。这与一个标准四位二进制计数器的前十个状态相同。
void main() { int x,xx; unsigned int y,k,*p; unsigned char *q;
scanf("%d",&x); xx=x%10000; q=(unsigned char *)0x3003;
while ( xx ) { *q=xx%10; xx/=10; q--; } //存放bcd码大端模式
}
假定输入1234,则从3000H开始的值为:01H,02H,03H,04H
用 C 语言?
有点不像啊。
跪求excel十进制变十六进制然后再把得到的数取后四位变回十进制
如果你是用的Excel2007,那就非常好办。假如在A1输入原始数据,在B1输入公式:=HEX2DEC(RIGHT(DEC2HEX(A1),4))然后B1就是你要的结果。如果你用2003,那就需要在工具加载项里添加工程函数。如果是这样,我再替你补充回答。
计算机是怎么转换二进制为十进制的
转成二进制主要有以下几种:正整数转二进制,负整数转二进制,小数转二进制;二进制转换为十进制将每个二进制数按权展开后求和即可。请看例题:把二进制数(101.101)2=1*22+0*21+1*20+1*2-1+0*2-2+1*2-3=(5.625)10
如何用multisim实现四位二进制转十进制,即数值范围为0-15
用4位加法器(下简称加法器):⑴4位二进制数作接加法器被加数输入端,加法器的和输出作为8421BCD码的个位,加法器的进位输出端作8421BCD码十位的最末位(高三位均为0);⑵设计组合逻辑电路:二进码≤9时,使加法器的加数输入端为全0;二进码>9时,使加法器加数输入端为0110。
5、接收用户输入的一个四位数,用while循环计算个位、十位、百位、千位...
给你两个版本:1. C++版本的:include<iostream> using namespace std;int main(){ int num=0;int result=0;cout<<"请输入数字: "<<endl;cin>>num;if(num<1000||num>9999) cout<<"Error!"<<endl;else { while( num>0 ){ result+=num%10;num\/=10;} } cout<<"结果为: "<<...
同步计数器怎样表示四位二进制数的?
至于去掉哪六个状态,可有不同的选择,这里考虑去掉1010~1111六个状态,即采用8421BCD码的编码方式来表示一位十进制数。在十进制计数体制中,每位数都可能是0,1,2,9十个数码中的任意一个,且,逢十进一。根据计数器的构成原理,必须由四个触发器的状态来表示一位十进制数的四位二进制编码。
编一程序,从键盘输入一个四位整数,然后将该数的每一位上的输进行互换...
program ex1_1;var i,temp:integer; n:integer;a:array[1..4] of integer;begin read(n);for i:=1 to 4 do begin a[i]:=n mod 10;n:=n div 10;end;for i:=1 to 4 do write(a[i]);end.
...任一个汉字或中文标点符号都可输入四位十进制数
应该是 C.区位
哪种译码器可以把四位二进制数转换为 可以在数码管上显示的十进制数字...
这显示译码器的芯片,有哇。74LS247,或74LS47配共阳数码管,74LS48配共阴数码管。见下图
在线等---输入法的问题
区位码一个四位的十进制数,它将GB 2312—80的全部字符集组成一个94×94的方阵,每一行称为一个“区”,编号为01~94;每一列称为一个“位”,编号为01~94,这样得到GB 2312—80的区位图,用区位图的位置来表示的汉字编码,称为区位码。机内码:为了避免ASCII码和国标码同时使用时产生二义...
计算机二进制,十进制,八进制,十六进制怎么转换
,即整数的最高位(最低位)添0,凑足四位。6、十六进制转二进制:取一分四法,即将一位十六进制数分解成四位二进制数,用四位二进制按权相加去凑这位十六进制数,小数点位置照旧。7、十进制和八进制之间、十进制和十六进制之间都是先把十进制转换为二进制,然后在转换为八进制或者十六进制。
毓聂通乳: 二进制编码的十进制数,简称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...
红桥区18056228616: C语言 十进制整数转换成base进制数 - ?
毓聂通乳: #include <stdio.h>#include <string.h>#include "stdlib.h"#include <conio.h>#define size 100//定义一个栈 typedef struct { int x[size]; int top ; }stack;//栈初始化 void init(stack &p){p.top=0; } //入栈 int push(stack &p,int &e){ if (p.top<size) { p.x[p....
红桥区18056228616: 将四位的十进制数转成一个为BCD码的程序 - ?
毓聂通乳:[答案] 二进制编码的十进制数,简称BCD码(Binarycoded Decimal). 这种方法是用4位二进制码的组合代表十进制数的0,1,2,3,4,5,6 ,7,8,9 十个数符.4位二进制数码有16种组合,原则上可任选其中的10种作为代码,分别代表十进制中的0...
红桥区18056228616: 十进制怎么转成BCD码 - ?
毓聂通乳: bcd码其实是伪编码,利用16进制的编码表现十进制的编码,如:16进制0x88,起始就是表示十进制的88 ,就是看到的16进制编码,按十进制看待即可.这样的好好处是十进制的数字传输每位也是按1个字节处理,很多设备对于16进制编码很容易编排和展现,为了表示10进制,直接按16进制设置直接明了.无论是16进制还是10进制都直接表现10进制内容,反而不用来回转换.具体转换方式直接将16进制转换成字符串即可.
红桥区18056228616: 欲将单片机中4位十进制数(千、百、十、个位)进行分离,或将其转换成BCD码,,请诸位不吝赐教, - ?
毓聂通乳: 不知 是 单片机 数据转换问题,还是?,什么类型的单片机,如51的 还是? 如果 是 多字节的 如 十六进制 转 十进制 或者 十进制 转十六进制 或者 一个字节 的 两位 十进制数 分离 成两个字节 的两位 十进制数 或者 两个字节 的 四位 十进制数 分离 成四个字节 的四位 十进制数 用 汇编 语言 多 可以做到的.当然需要 用到多条指令才能做到.
红桥区18056228616: 给定一个十进制数(整数或小数)如何转化为二进制和8421BCD码,以及给定8421BCD码如何转化为十进制; - ?
毓聂通乳: 8421BCD码转化为十进制: 8421码一共四位 每位都是0或者是1 假设给出的码是1010 那么每位分别和和8421对应 可得 8*1+4*0+2*1+1*0=10(十进制) 再者 码1100 8*1+4*1+2*0+1*0=12(十进制) 就是四位和8421对应在进行相加 十进制数...
红桥区18056228616: C++编写一个程序,将用户输入的十进制整数转换成任意进制的数 - ?
毓聂通乳: 1、首先,定义四个整型变量,保存十进制整数、二进制整数等计算值. 2、给变量i和二进制数赋初值,值为0. 3、接着,输入一个十进制整数. 4、用while语句判断,条件为十进制数是否为零. 5、当十进制数不为零时,对十进制数用2求余,保存在变量d中. 6、十进制数除以2,使数值缩小为原来的二分之一. 7、输出十进制数所对应的二进制数. 8、运行程序,输入任意一个十进制整数,计算机就会输出对应的二进制数.
红桥区18056228616: 计算机数制转换 - ?
毓聂通乳: BCD码(二到十进制编码)把十进制数的每一位分别写成二进制形式的编码,称为二进制编码的十进制数,即二到十进制编码或BCD(Binary Coded Decimal)编码.BCD码编码方法很多,通常采用8421编码,这种编码方法最自然简单.其方...
红桥区18056228616: 肿么把二进制数转成BCD码 - ?
毓聂通乳: 手算,方法如下: 先把多位的二进制数转成十进制数,再把每位十进制数,转换成四位二进制数.
红桥区18056228616: 各进制数如何转换 - ?
毓聂通乳: 一: 十进制数转换成二进制数. 随便拿出一个十进制数“39”,(假如你今天买书用了39元)先来把这个39转换成2进制数. 商 余数 步数 39/2= 19 1 第一步 19/2= 9 1 (这里的19是第一步运算结果的商) 第二步 9/2= 4 1 (这里的9是第二步...