iT邦幫忙

0

二進位的簡易算法

tt0123q 2012-02-22 13:40:38110436 瀏覽
  • 分享至 

  • xImage

數字只有0跟1的二進位,再數字3之後,該如何簡易寫出.....例如
1的二進位數等於1
2的二進位數等於10
3的二進位數等於11
4的二進位數等於100
5的二進位數等於101
6的二進位數等於110

看更多先前的討論...收起先前的討論...
總裁 iT邦好手 1 級 ‧ 2012-02-22 18:49:45 檢舉
用遞迴的寫法,沒幾行就能寫出來了,自己去找找吧。
tt0123q iT邦新手 5 級 ‧ 2012-02-23 13:44:02 檢舉
請問什麼是遞迴的寫法
因為不是本科系
請大師多多指教
總裁 iT邦好手 1 級 ‧ 2012-02-23 17:37:33 檢舉
void test(int a)
{
int b,c;
b = a % 2;
c = a / 2;
if (c ==0)
printf("%d",b);
else{
test(c);
printf("%d",b);
}
};
總裁 iT邦好手 1 級 ‧ 2012-02-23 17:39:02 檢舉
void test(int a)
{
  int b,c;
  b = a % 2;
  c = a / 2;
  if (c ==0)
    printf("%d",b);
  else{
    test(c);
    printf("%d",b);
  }
};
krarm iT邦好手 1 級 ‧ 2012-02-23 20:23:53 檢舉
超短遞迴版本:
test(int a) {
 if(!a)
   return;
 test(a>>1);
 printf("%d",a%2);
}
krarm iT邦好手 1 級 ‧ 2012-02-23 20:27:39 檢舉
更短一點:
test(int a) {
 if(a) {
   test(a/2);
   printf("%d",a%2);
 }
}
tt0123q iT邦新手 5 級 ‧ 2012-02-25 08:53:07 檢舉
我是初學者
不懂原始碼
可以把它白話一點嗎....謝謝幫忙
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

6
vino1
iT邦大師 1 級 ‧ 2012-02-22 14:05:39
最佳解答

這種東西有簡易的表達方法嗎?!
正規法是用2去除那個數...
小弟我都是用底下這樣方式偷懶算的
請參閱~

看更多先前的回應...收起先前的回應...
tt0123q iT邦新手 5 級 ‧ 2012-02-23 08:58:51 檢舉

請問二進位左邊的0是會無限延生的嗎

vino1 iT邦大師 1 級 ‧ 2012-02-23 12:52:28 檢舉

無限延伸?! 不太懂您的意思..
基本上那是 2 的 n 次方, 有用到就填 1 , 沒用到就填 0 ...

tt0123q iT邦新手 5 級 ‧ 2012-02-23 13:42:16 檢舉

不懂的是-1號問題
3的二進位數等於11
4的二進位數等於100
其中0與1的模式應該有某種規律變化
如果要繼續個數字或十位數或其他多位數
該如何產生

不懂的是-2號問題
有些人會把0000001=001=1
往左邊無限延伸的0有代表什麼意義嗎
為什麼很多ex0000001跟001都是指同一數值1

vino1 iT邦大師 1 級 ‧ 2012-02-23 16:15:57 檢舉

問題1
0 或 1如何來?! 算囉, 不然呢?!
有無規律...應該沒有吧...
10幾位數的10進位如何快速轉成2進位?!
用程式或是計算機算...用手算或心算應該答不到您的需求.
問題2
小弟不才, 我有看過用類似 0x0001 這樣表示的, 但我沒看過
用 ex0000001 來表示 2 進位..
基本上, 只要有先表示那是2進位數值, 管它前面幾個0,
從左邊數來有 1 的地方開始看就是了~

4
94404603
iT邦新手 5 級 ‧ 2012-02-23 17:15:32

以十進位的10 轉成 二進位的1010

過程 10 / 2 = 5 餘 0

5 / 2 = 2 餘 1

2 / 2 = 1 餘 0

1 / 2 = 0 餘 1

你去觀察餘數的排列由下至上是 1010

就是把十進位的數值一直除以2, 直到除出來的答案為 0,

在把餘數排列就是你要的答案.

tt0123q iT邦新手 5 級 ‧ 2012-02-24 08:55:31 檢舉

我大概知道十進位轉二進位
可以用2去除得到答案
雖然只是比較慢而已
那為什麼
常常要將數字以4個為一個單位去分組
有誰知道為什麼

skyrider iT邦新手 5 級 ‧ 2012-02-29 18:12:11 檢舉

tt0123q提到:
我大概知道十進位轉二進位
可以用2去除得到答案
雖然只是比較慢而已
那為什麼
常常要將數字以4個為一個單位去分組
有誰知道為什麼

慣用原因不知
個人習慣

  1. 因為 4 BIT 可以代表 1~16 心算方便
  2. 剛好是 0~F 一個字元可以表示
  3. BCD碼 是 0~9 也是剛好
  4. 其他原因

我要發表回答

立即登入回答