2017-02-23 202 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位。