Integer 基转换

Integer 基转换,integer,Integer,我知道通常从10月到12月的转换。一些更聪明的方法?了解您为什么希望通过位屏蔽来实现这一点会有所帮助,因为有时有更好的方法来解决您的全局问题,而不是这个小要求 我有一种感觉,这是为了家庭作业,因为在谷歌搜索这个问题时,我发现论坛上有和家庭作业相同的问题。如果这是家庭作业,那么请把它标记为家庭作业,就像你最近问的另一个问题一样 感谢谷歌,我终于找到了答案 也许这会帮助你理解 void convertBase(int decimal) //Function that convert decimal

我知道通常从10月到12月的转换。一些更聪明的方法?

了解您为什么希望通过位屏蔽来实现这一点会有所帮助,因为有时有更好的方法来解决您的全局问题,而不是这个小要求

我有一种感觉,这是为了家庭作业,因为在谷歌搜索这个问题时,我发现论坛上有和家庭作业相同的问题。如果这是家庭作业,那么请把它标记为家庭作业,就像你最近问的另一个问题一样

感谢谷歌,我终于找到了答案 也许这会帮助你理解

void convertBase(int decimal) //Function that convert decimal to base of 8
{
  const int mask1 = (7 << 3);
  const int mask2 = (7 << 0);
  firstDigit = (decimal & mask1) + '0';
  secondDigit = (decimal & mask2) + '0';
  printf("Octal Representation of Binary Number: %d%d\n", firstDigit, secondDigit);
}
void convertBase(int-decimal)//将十进制转换为8进制的函数
{

const int mask1=(7此函数读取八进制字符串并返回其数值

int parse_octal(const char* s) {
  int r = 0;
  for ( ; *s; s++)
    r = (r << 3) | (*s & 7);
  return r;
}
int-parse_-octal(常量字符*s){
int r=0;
对于(;*s;s++)

r=(你说输入是十进制的是什么意思?问得好,谢尔顿,你肯定在那儿跟我说过:-)Decimal实际上意味着一个以10为基数的数字……所以我假设这段代码是设计用来处理以10为基数的整数的,而不是一个名为Decimal的数字类型。我还没有测试这段代码是否真的有效。我在这个解决方案上投入的精力和OP在家庭作业上做的一样多。我只是想指出,如果你看的话,还有一些事情:-)您能解释一下您的限制是什么吗?输入是如何表示的?最重要的是,为什么您必须使用位掩码?在这种情况下,该行相当于:
r=r*8+(*s-'0')左移三次相当于乘以
2^3=8
,这是基数。这就是
3
的来源。7是位掩码
111
(二进制)。
(*s&7)
提取ASCII值的3个最低有效位。例如,
('3'&7)=3
(请注意,
'3'
表示ASCII值,
3
表示数字)。