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