#define NUM_BITS 8//比特数目
typedef unsigned char Binary[NUM_BITS];
//把一个[0,255]区间的十进制数转换为一个二进制串Binary
//例如:x=1,bin=[0,0,0,0,0,0,0,1]
//x=127,bin=[0,1,1,1,1,1,1,1]
void UChar2Bin(unsigned char x, Binary bin)
{
//参数x是一个十进制数,
//参数bin是一个二进制串
//请在下方补充代码实现十进制数到二进制串的转换
//1.在下面补充代码,初始化bin(1分)
//2.在下面补充代码,把x转换成二进制,填入bin数组(3分)
//转换方式如下:假设x=[x1,x2,x3,...x8],即:
//x = x1*2^7 + x2*x^6 + x3*x^5 +... +x8;
//那么:bin[0] = x1,bin[1] = x2,....bin[7] = x8;
//提示:移位操作>>,按位与&。
for(size_t count = 0; count <= NUM_BITS - 1; count++)
bin[NUM_BITS - 1 - count] = (1<
#include
//把二进制数转换为十进制数
unsigned char Bin2UChar(Binary bin)
{
int x = 0;
//3.在下面补充代码,把bin数组中的二进制串转换为十进制数x(1分)
//转换方法:x = b[0] * 2^7 + b[1]*2^6 + ....b[7]
for(size_t count = 0; count<=7; count++)
x += b[count] * pow(2, NUM_BITS - 1 - count);
return x;
}
十进制数转换为一个二进制
void UChar2Bin(unsigned char x, Binary bin)
{
int c= '0'+x;
for(int i=0;i<8;i++){
bin[i] = c%2;
c=c>>2;
}
}
//把二进制数转换为十进制数
unsigned char Bin2UChar(Binary bin)
{
int x = 0;
//3.在下面补充代码,把bin数组中的二进制串转换为十进制数x(1分)
//转换方法:x = b[0] * 2^7 + b[1]*2^6 + ....b[7]
for(int i=0;i<8;i++){
if(i==0){
x=x+b[0];
}else {
int y=b[i];
for(int j=0;jy = y*2;
}
x=x+b[i];
}
}
return x;
}
(自己稍加改进)