16/8进制负数怎样转换成10进制

来源:百度知道 编辑:UC知道 时间:2024/06/08 04:05:15
书上写的-0x12 换成10进制是 -10
怎么做的

-0x12 换成10进制是 -10吗?个人觉得应该是-18吧。

楼主我觉得你的问题提法有点问题。
在计算机内部,是没有什么"+","-"这种符号的。
有无符号还是要依赖变量的类型来定的。

char a=0xFF; // 有符号,因此是十进制的-1
unsigned char b=0xFF; // 无符号,因此是十进制的255

对于变量而言,只有变量类型和变量值两个属性。
至于楼主说的16进制、8进制的转换大多数都是在变量输出到文本时才出现转换的吧。
下面的例子示例了变量a以不同的格式进行输出
char a=0xFF;
printf("HEX:%x,OCT:%o,DEC:%d,unsigned DEC:%u",a,a,a,a);

输出后的文本串中就是不同进制的数值了。
楼主如果是从文本中读入数据进行转换可以参考以下下面代码:
int b;
scanf("%o",&b); // 以无符号8进制格式读入数值,放入整型变量b中
//其后对b的操作就不用管进制的问题了
// 假设读入数据为11(八进制),对应十进制的9
printf("%d",b); // 此句输出就是9

以上代码是否解决了楼主的进制转换问题呢?^_^

1*8^1+2*8^0=10