簡體   English   中英

c語言如何實現二進制到十進制的轉換

[英]How binary to decimal conversion is implemented in c language

printf實現如何有效地實現整數值到十進制值的轉換?

在現代計算機上,計算通常比 I/O 快得多,這里就是這種情況。 C 庫將使用一種簡單的方法。 modulo 選項用於獲取最低有效數字,divide 用於消耗數字並迭代。 不幸的是,數字的生成順序與 I/O 順序相反,因此需要在輸出之前對其進行緩沖。 這可以通過遞歸來完成,但最大位數是先驗已知的,因此預分配字符數組會更快。

該數字可能為負數,因此在循環外進行處理。

char digits[N];
p = &digits[N-1];
*p-- = 0;
unsigned x = integer_input;
if (integer_input < 0 && integer_input >= -INT_MAX) x = -integer_input;
do {
    *p-- = (x % 10) + '0';
    x /= 10;
} while x != 0;
if (integer_input < 0) *p-- = '-'
// now p points to c string

newlib就是這樣做的,盡管它支持 10 以外的基數。

glibc 就是這樣做的

兩者都遵循上述方法,盡管是通用的。

你只需要知道一台計算機只能執行兩個操作,第一個是補碼,第二個是加法。 所有其他操作也由這兩個操作執行。 並且在將數據存儲在內存中時,如果實現了二進制補碼進行轉換,這也是從上述兩個操作中推導出來的,並且再次從二進制轉換為十進制。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM