十进制数2013,用二进制,八进制,十六进制各表示为多少

十进制数2013,用二进制,八进制,十六进制各表示为多少,第1张

二进制:0111 1101 1101

八进制:3735

十六进制:7DD

将商继续除以2,直到商为0。最后将所有余数倒序排列,得到数就是转换结果。

10进制数转换成8进制的方法,和转换为2进制的方法类似,唯一变化:除数由2变成8。

10进制数转换成16进制的方法,和转换为2进制的方法类似,唯一变化:除数由2变成16。

扩展资料:

例如十进制数57,在二进制写作111001,在16进制写作39。在历史上,中国曾经在重量单位上使用过16进制,比如,规定16两为一斤。如今的16进制则普遍应用在计算机领域,这是因为将4个位元(Bit)化成单独的16进制数字不太困难。1字节可以表示成2个连续的16进制数字。可是,这种混合表示法容易令人混淆,因此需要一些字首、字尾或下标来显示。

参考资料来源:百度百科-十六进制

#include<stdioh>
#include<stdlibh>
void main()
{
int i,n,x,a[1000],j,k,q;
FILE p;
p=fopen("C:\\Users\\Administrator\\Desktop\\1txt","w");//自定义一个文档,你可以自己弄一个,最好在桌面
printf("请输入你想转换成几进制:");
while(scanf("%d",&n)&&n)//n=0时,退出并保存数据
{
for(i=0;i<=255;i++)
{
j=0;
x=i;
q=0;
if(x==0)
{
a[j]=0;
q=1;
}
while(x)
{
a[j++]=x%n;
x/=n;
}
printf("%3d转换成%3d进制为:",i,n);
fprintf(p,"%3d转换成%3d进制为:",i,n);
if(q==1)
{
printf("%d",a[0]);
fprintf(p,"%d",a[0]);
}
for(k=j-1;k>=0;k--)
{
printf("%d",a[k]);
fprintf(p,"%d",a[k]);
}
printf("\n");
fprintf(p,"\n");
}
printf("\n请输入你想转换成几进制:");
}}
就是利用文件函数就行了

1、二进制数、八进制数、十六进制数转十进制数
有一个公式:二进制数、八进制数、十六进制数的各位数字分别乖以各自的基数的(N-1)次方,其和相加之和便是相应的十进制数。个位,N=1;十位,N=2举例:
110B=12的2次方+12的1次方+02的0次方=0+4+2+0=6D
110Q=18的2次方+18的1次方+08的0次方=64+8+0=72D
110H=116的2次方+116的1次方+016的0次方=256+16+0=272D
2、十进制数转二进制数、八进制数、十六进制数
方法是相同的,即整数部分用除基取余的算法,小数部分用乘基取整的方法,然后将整数与小数部分拼接成一个数作为转换的最后结果。
例:见四级指导16页。
3、二进制数转换成其它数据类型
3-1二进制转八进制:从小数点位置开始,整数部分向左,小数部分向右,每三位二进制为一组用一位八进制的数字来表示,不足三位的用0补足,
就是一个相应八进制数的表示。
010110001100B=2614Q
八进制转二进制反之则可。
3-2二进制转十进制:见1
3-3二进制转十六进制:从小数点位置开始,整数部分向左,小数部分向右,每四位二进制为一组用一位十六进制的数字来表示,
不足四位的用0补足,就是一个相应十六进制数的表示。
0010011000010100B=2614H
十进制转各进制
要将十进制转为各进制的方式,只需除以各进制的权值,取得其余数,第一次的余数当个位数,第二次余数当十位数,其余依此类推,直到被除数小于权值,最后的被除数当最高位数。
一、十进制转二进制
如:55转为二进制
2|55
27DD1 个位
13DD1 第二位
6DD1 第三位
3DD0 第四位
1DD1 第五位
最后被除数1为第七位,即得110111
二、十进制转八进制
如:5621转为八进制
8|5621
702 DD 5 第一位(个位)
87 DD 6 第二位
10 DD 7 第三位
1 DD 2 第四位
最后得八进制数:127658
三、十进制数十六进制
如:76521转为十六进制
16|76521
4726 DD5 第一位(个位)
295 DD6 第二位
18 DD6 第三位
1 DD 2 第四位
最后得1276516
二进制与十六进制的关系
2进制 0000 0001 0010 0011 0100 0101 0110 0111
16进制 0 1 2 3 4 5 6 7
2进制 1000 1001 1010 1011 1100 1101 1110 1111
16进制 8 9 a(10) b(11) c(12) d(13) e(14) f(15)
可以用四位数的二进制数来代表一个16进制,如3A16 转为二进制为:
3为0011,A 为1010,合并起来为00111010。可以将最左边的0去掉得1110102
右要将二进制转为16进制,只需将二进制的位数由右向左每四位一个单位分隔,将各单位对照出16进制的值即可。
二进制与八进制间的关系
二进制 000 001 010 011 100 101 110 111
八进制 0 1 2 3 4 5 6 7
二进制与八进制的关系类似于二进制与十六进制的关系,以八进制的各数为0到7,以三位二进制数来表示。如要将51028 转为二进制,5为101,1为001,0为000,2为010,将这些数的二进制合并后为1010010000102,即是二进制的值。
若要将二进制转为八进制,将二进制的位数由右向左每三位一个单位分隔,将事单位对照出八进制的值即可。
回答者:nijino0911 - 举人 四级 9-20 15:18

0~9,A~F就是16进制字符串表示方式啊。字母不分大小写,但字母必须同时是大写或者同时是小写。
你的这个是16进制字符串。这么长的一串,一般用在各种校验码里面的。
毕竟现在校验码都是很长一串16进制字符串表示的,比如;
MD5: 74C6AEDFCA4D9D0D382B7F7B3F126312
SHA1: 5C4707844B039ADC56FAF32A7CCBD51923B09799
CRC32: D7548C14

数制是利用符号来计算的科学方法。分非进位计数制和进位计数制。进位数制中,逢二进一是二进制,逢八进一是八进制,逢十进一是十进制,逢十六进一是十六进制。
两个最基本的概念:基数和权。
二进制(B)的基数:1和0 进位基数:2
八进制(Q)的基数:0---7 进位基数:8
十进制(D)的基数:0---9 进位基数:10
十六进制(H)的基数:0---9 A--F(相当于10--15) 进位基数:16
看基数一般能看出是什么进制
权:每个数码所代表的数值等于该数码乘以一个与数码所处数位有关的常数。计算方法:以该进位制的基数为底,以数码所在数位的序号为指数,所得的整数次幂即为该进位在该数位上的权,整数部份按右至左的顺序从0开始计,小数部份按左至右的顺序从事-1开始计。
1十进制数与非十进制数之间的转换
(1)十进制数转换成非十进制数
把一个十进制数转换成非十进制数分成两步整数部分转换时采用“除整取余法”;小数部分转换时采用“乘基取整法”(转换成二进制时,小数部分积有可能不会为正整数时,就取近似值)。
(2)非十进制数转换成十进制数
非十进制数(基数记作R,第j个数位的位权记作Rj)转换成十进制数的方法:按权展开求其和。
2非十进制数之间的转换
(1)二进制数与八进制数之间的转换
①二进制数转换成八进制数的方法以小数点分界,整数部分自右向左、小数部分自左向右,每三位一组,不足三位时,整数部分在高位左边补0,小数部分在低位右边补0,然后写出对应的八进制数码。
②八进制数转换成二进制数的方法:用八进制数码对应的三位二进制数代替八进制数码本身即可。
(2)二进制数与十六进制数之间的转换
①二进制数转换成十六进制数的方法:以小数点分界,整数部分自右向左、小数部分自左向右,每四位一组,不足四位时,整数部分在高位左边补0,小数部分在低位右边补0,然后写出对应的十六进制数码。
②十六进制数转换成二进制数的方法:用十六进制数码对应的四位二进制数代替十六进制数码本身即可。

四种进位制计数之间的关系
十进制(D) 二进制(B) 八进制(Q) 十六进制(H)
0 0000 0 0
1 0001 1 1
2 0010 2 2
3 0011 3 3
4 0100 4 4
5 0101 5 5
6 0110 6 6
7 0111 7 7
8 1000 10 8
9 1001 11 9
10 1010 12 A
11 1011 13 B
12 1100 14 C
13 1101 15 D
14 1110 16 E
15 1111 17 F
16 10000 20 10

进制是一种计数系统,进位的制度,规则。

我们从小学习以及日常使用的是10进制系统,原始社会没有数学概念时都是用石头计数,比如去采果子,采到多少就用多少小石头对应,因为老祖宗根本不知道1234567890这些符号可以代替石头。

用实物计数是很麻烦,后来人类进步了逐渐有了数的概念也有了文字,从而产生了数学符号(文字本身就是个符号),而人们发现用数字符号代替石头计数方便很多,最终演变并统一采用阿拉伯数字作为符号,那就是0123456789。

为什么没有大于9的单独的符号,因为人们觉得0-9等10个够了,因为10个数字很整齐,也许觉得再多就乱了(我猜的),大于9的数字就用2个符号表示,因此各位上满10了,就在前面(左边)写1,原来的位置写0,就构成“10”表示数字10,这就是逢十进一的计数制度,简称十进制。

萝莉啰嗦说了那么多,为的是让你理解其他进制,其实没什么特别,无非就是把“逢十进一”改成“逢n进一”,n就是进制。你当代数代入即可。

比如二进制,就是逢二进一,在二进制中因为只需要2个符号,所以只需要“0”和“1”就可以了。那么如果要表示大于1的数怎么办,那就是进位,比如2(10)=10(2),括号里面表示进制,也就是(10进制的)2=(2进制的)10。其他进制以此类推。

特别要说明的是16进制中,由于需要16个符号,因此0-9这10个符号不够了,只能问字母借,按照顺序取英文字母序列的头6个字母“ABCDEF”作为16进制中余下的几个符号,分别代表:10、11、12、13、14、15。如此一个16进制数,比如F等于10进制的15。满16就进位成10(16),同样括号内的数字代表进制。

为什么要有这么多的进制?首先因为计算机电路中开闭状态最稳定,不容易受电路里的电涌、电磁波(电磁感应)影响而改变储存在里面的数据(电平状态),电子线路很容易做到将电平锁住在两个极端。因此目前为止计算机普遍采用2进制,也是出于无奈。

当然呈现在你面前的大部分应用程序中的数字全部是10进制的,因为计算机帮你转换了,而作为编程人员,你必须掌握二进制。而8进制、16进制等常用的进制都可以与2进制方便转换,在有些场合比较有用,比如查看内存一个字节,如果按值直接显示一个数,比如一个8位2进制11011101,就会占很大篇幅,不便于显示和描述,而转换成16进制DD就简短的多,方便程序员分析,DD的10进制数为221,你可以用WINDOWS中带的计算器验证。

-35是16进制的0xffffffdd
你的二进制文件byte实际上是char型,因此需要进行由char至int的类型提升,由于你这个byte的值为0Xdd(221),根据数据宽度扩展时符号位的扩展规则,它会被扩展为(int)0XFFFFFFDD(也就是-35),
如果想把-35转换为221,用以下方法:
Systemoutprintln(-35&0xff);
就可以转换为你要的结果

设x是16位二进制值(x=$07DD),则使用以下语句可分离
send_data[1] := x shr 8;send_data[2] := x and $FF;
即为:send_data[1] = $07,send_data[2] = $DD。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/13386092.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-26
下一篇 2023-07-26

发表评论

登录后才能评论

评论列表(0条)

保存