2个回答
展开全部
二进制数学过没?(这是高中数学有学的)
如果学过,应该下面的语句很容易理解。
部分代码如下:
if(buff %2 ==1){ //buff除以2余1
s[i]='1';
}else{ //不出余1那就是余0了
s[i]='0';
}
buff /= 2; //buff自除2
举个例子:若
buff= 10110010; (实际上有32位,这里举8位方便些)
buff %2 得到最低为 0,因为二进制最低位偶数为0,奇数为1。
然后 buff /= 2; 二进制数除以2,那就是整个数字右移一位。
即 01011001。
如有疑问或不明白请提问哦!
如果学过,应该下面的语句很容易理解。
部分代码如下:
if(buff %2 ==1){ //buff除以2余1
s[i]='1';
}else{ //不出余1那就是余0了
s[i]='0';
}
buff /= 2; //buff自除2
举个例子:若
buff= 10110010; (实际上有32位,这里举8位方便些)
buff %2 得到最低为 0,因为二进制最低位偶数为0,奇数为1。
然后 buff /= 2; 二进制数除以2,那就是整个数字右移一位。
即 01011001。
如有疑问或不明白请提问哦!
更多追问追答
追问
嗯,谢谢。有点清楚了。
那数学运算在计算机里面都是用二进制来计算的吗,那如果不是除2的x次幂 ,比如buff /= 3 要怎么办。
还有为什么这个程序里面要memcpy拷贝一次,不会多此一举吗
追答
现代计算机实际的一切运算都是用二进制!
十进制等其他程序都是靠二进制的运算来转化的
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询