关于八进制017 和16进制 0x2F 转换为10进制

作者&投稿:函章 (若有异议请与网页底部的电邮联系)
8.下面四个选项中,均是正确的八进制数或十六进制数的选项是( C )。 A) -10 0x8f -011 B) 0abc -017 0~

用二进制表示八进制的数时,只有三位:也就是000-111,2的3次方组合=8,且八进制数不能表示负数和小数,用来表示整数;
在数制使用时,常将各种数制用简码来表示:如十进制数用D表示或省略;二进制用B来表示;十六进制数用H来表示。如:十制数123表示为:123D或者123;二进制数1011表示为:1011B;十六进制数3A4表示为:3A4H。
另外在编程中十六进制数也用“0x”作为开头。
这样看来:A 、-10就不是八进制咯,-011更离谱,只有三位0和1的组合,这里整出4位,并且也不是16进制;
B、0abc估计想表示的是16进制,但它没有以0x开头,所以错;-017和A的-011一样的解释;D、的0a12和B的0abc一样。

手工还是编程?
手工可以这样:把16进制数从左至右按16进制各位上的“数”代表的二进制依次写出来,比如0x9B8D7F6543D为10011011100011010111111101100101010000111101,再从右至左每3位分开(最左端不足3位时在前面用0补齐)010,011,011,100,011,010,111,111,101,100,101,010,000,111,101。最后用八进制符号对应写出来就可以了——233432775452075。十六进制数0x9B8D7F6543D的八进制就是233432775452075!
//#include "stdafx.h"//vc++6.0加上这一行.
#include "stdio.h"
#include "string.h"
void dtob(char *p,int n){
static i=0;
if(n) dtob(p,n/2);
if(n) p[i++]=n%2+'0';
}
int dtoo(char *p){
int x,i,k=strlen(p)%3;
for(x=i=0;i<k;(x*=2)+=p[i++]-'0');
for(;p[i];i+=3)
(x*=10)+=((p[i]-'0')<<2)+((p[i+1]-'0')<<1)+p[i+2]-'0';
return x;
}
void main(void){
int n;
char a[33]="";
printf("Type a hexadecimal number...
n=0x");
scanf("%X",&n);
dtob(a,n);
printf("The binary is %s.
",a);
printf("The octal %d.
",dtoo(a));
}

017转10进制1*8e1+7*8e0=15
0x2F转10进制 2*16e1+15*16e0=47

017=0×8^3+1*8^1+7*8^0=15

0x2F=2*16^1+F*16^0=32+F=32+15=47

八进制017和16进制0x2F都是不同的表示方法,但它们都可以转换为10进制。
转换的方法是将每一位数乘以对应的权值,并求和。权值是指不同进制的基数的幂次,例如八进制的基数是8,16进制的基数是16,10进制的基数是10。
例如,八进制017转换为10进制的过程如下:
017 = 0 * 8 ^ 2 + 1 * 8 ^ 1 + 7 * 8 ^ 0 = 0 + 8 + 7 = 15
所以,八进制017等于10进制15.
同理,16进制0x2F转换为10进制的过程如下:
0x2F = 2 * 16 ^ 1 + F * 16 ^ 0 = 32 + F * (15) = (32) + (15) = (47)
所以,16进制0x2F等于10进制47


金水区17653872424: 八进制整型常量前面能带负号吗?还有十六进制的整型变量,0x和0X?
荀宗维英: 能.例如八进制: -017 ,表示成十进制是 -15 ;十六进制数:-0xa7 ( 或写成-0Xa7 ,-0XA7 ),表示成十进制是 -167 .0x后跟的数字可以是0到9即a到f(或是A到F).不分大小写.

金水区17653872424: java数值中017表示的十进制数是?0X17表示十进制数是? -
荀宗维英: 017表示的是8进制的数. 其中的1代表的是8也就是8+7=15 0X17代表的是16进制的数,其中的1代表16也就是16+7=23

金水区17653872424: 十六进制的三位数和八进制的三位数怎么表示? -
荀宗维英: 八进制以0开头,十六进制以0x开头,100的八进制是0144,十六进制是0x64,,999的八进制是01747,十六进制是0x3E7,所以八进制的三位数是0144---01747,十六进制的三位数是0x64---0x3E7

金水区17653872424: 下列四组常数中,均是正确的八进制数或十六进制数的一组是() -
荀宗维英:[选项] A. 016 0xbf 018 B. 0abc 017 0xa C. 010 -0x11 0x16 D. 0A12 7FF -123 需要详细分析

金水区17653872424: 十六进制\0x中的x区分大小写吗还有和八进制的0是数字0还是字母O -
荀宗维英: 给你举个例子,十进制 16 分别用十六进制和8进制表示十六进制可以这样写 : 0x1 或者 0X1 (0是数字零)八进制可以这样写: 020 (前面的0是数字零)很多人说是英文字母o,我查了资料是错误的理解. 不知道你懂C语言不,给你举个例子吧 int o123; int a = o123; 这样o123就有歧义了,所以只可能是 0123表示才对.

金水区17653872424: 正确的八进制和十六进制的是A - 10 0X8F - 011 B 0abc - 017 0xc C 0010 - 0X11 0Xfl
荀宗维英:B 0abc -017 0x

金水区17653872424: 十六进制\0x中的x区分大小写吗还有和八进制的0是数字0还是字母O -
荀宗维英: 1、十六进制数以数字零开始,0x中的x在c语言中是不分大小写的,即0x与0X等价.2、八进制以英文字母o开头,在c语言里也是不分大小,即o与O等价.3、十六进制数是一种逢十六进一的计数体制,基数是16,用0~9,A~F表示,如0xFF或0XFF.4、八进制数是一种逢八进一的计数体制,基数是8,用0~7表示,如o77或O77.

金水区17653872424: 关于八进制与十六进制数值前0的问题!
荀宗维英: 八进制数值和十六进制数值前的0是都是数值0 其中十六进制数值前是0x,即数字0和字母x的组合.

金水区17653872424: 下列四组常数中,均是正确的八进制数或十六进制数的一组是() -
荀宗维英: 注意一下,以0打头的是八进制数,以x打头的是十六进制数 下面我们来看: A. 0abc 017 0xa //错误,第1个数0abc是以0打头的,它是八进制数,八进制数取值为0~7,不可能为abc,所以错误 B. 016 0xbf 018 //错误,第2个数018是以0打头的,它是八进制数,八进制数取值为0~7,不可能为8,所以错误 C. 010 -0x11 0x16 //对的 D.0A21 7FF 123 //错误,第1个数0A21是以0打头的,它是八进制数,八进制数取值为0~7,不可能为A,所以错误

金水区17653872424: 0010是八进制数吗?是010吗? -
荀宗维英: 如果你在c里面直接使用这个数的话,就会被当作八进制的数字看待.c里面,0开头的数字都当作八进制,0x开头的被当作十六进制.0010的第一个0是八进制符号,第二个0是百位上的信息.所以结果是八进制的010,即八进制的10,十进制的8.

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网