2017-02-23 164 views
0

因此,我正在做一个将小数转换为二进制的代码。我只想让我的二进制数字在8位。有什么建议么?8位二进制代码

#include <stdio.h> 
#include <stdlib.h> 
using namespace std; 

long decimalToBinary(long n); 

int main() { 
    long decimal; 

    printf("Enter a decimal number: "); 
    scanf_s("%d", &decimal); 
    printf("Binary number = ") << decimalToBinary(decimal); 

    return 0; 
} 
long decimalToBinary(long n) { 
    int remainder; 
    long binary = 0, i = 1; 

    while (n != 0) { 
     remainder = n % 2; 
     n = n/2; 
     binary = binary + (remainder*i); 
     i = i * 10; 
    } 
    return binary; 
} 
+0

你的代码有什么问题吗?它应该做什么(输入和预期输出的例子)?它究竟是什么*在做什么? (同样的例子)。用于读取'signed long'的格式字符串是错误的;它应该是'%ld',但更重要的是应该是'std :: cin >> decimal;'一旦包含正确的头文件。而那个你想要像'std :: cout'那样对待的'printf'完全没有意义。 – WhozCraig

+0

@WhozCraig这是旧的左移printf –

+0

请看[为什么“有人可以帮我吗?”不是一个实际的问题?](http://meta.stackoverflow.com/q/284236) – EJoshuaS

回答

-1
long decimalToBinary(long n) { 
    return n & 0xFF; 
} 

(n & 0xFF00) >> 8(n & 0xFF0000) >> 16(n & 0xFF000000) >> 24。取决于你想要的8位。