求得结果是返回得到的余数么? 是转换为二进制还是??
如果是转换为二进制则代码如下:
// test3.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <stdio.h>
#include <iostream>
#include <math.h>
using namespace std
void comput(int x,char *s)
int _tmain(int argc, _TCHAR* argv[])
{
int x,i
char s[32]
scanf("%d",&x)
comput(x,s)
for (i=strlen(s),i--i>=0i--)
{
cout<<s[i]
}
printf("\n")
system("pause")
return 0
}
void comput(int x,char *s)
{
int y
int i=0,j
while (true)
{
if (x%2==0)
{
s[i++]='0'
}
else
{
s[i++]='1'
}
j=x/2
x=j
if (j==0)
{
s[i]='\0'
return
}
}
}
截图如下:
C语言怎中取模运算符是“%”,作用是求两个数相除的余数。
例如,请看下面这段代码:
x=15/7如果x是一个整数,x的值将为2。然而,如果用取模运算符代替除法运算符"/",得到的结果就不同了:
X=15%7这个表达式的结果为15除以7的余数,等于1,这就是说,15除以7得2余1。
取模运算符通常用来判断一个数是否被另一个数整除。例如,如果要打印字母表中序号为3的倍数的字母,可以使用下面这段代码:
int xfor(x=1 x<=26 x++)
if((x%3)==0)
printf("%c" x+64)
上例将输出字符串"cfilorux",即字母表中序号为3的倍数的所有字母。
CRC里的除法不是简单的二进制除法,不信用附件里的计算器算出的结果与它的结果不一样。CRC的二进制除法是这样的:
1111000
被除数
1101
除数
————
够除数的位数,商1
0010
余(除数与被除数前4位求异或得到的)
————
100
把被除数第5位挪下来
1101
除数
————
不够除,商0
1000
把被除数第6位挪下来
1101
除数
————
够除数的位数,商1
0101
余(仍然求异或)
————
1010
把被除数第7位挪下来
1101
除数
————
够除数的位数,商1
0111
余(仍然求异或)
————
被除数共7位,除完
所以得到商1011,余111
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)