2014-09-23 19 views
3

我是新來的java,我想知道是否有任何方法來計算單個int的二進制文件的實際數量和零。例如,我會嘗試找出int 6的二進制32位二進制中1和0的數目?計數數字java中的二進制數?

+0

按照您熟悉的任何其他語言的方式進行操作,並將該邏輯封裝在類的main()中。 – noMAD 2014-09-23 20:59:08

+2

請參閱http://stackoverflow.com/a/5263199/3802841以查看int可如何格式化爲字符串。計數'0'或'1',並減去字符串長度的計數。 – MPirious 2014-09-23 21:02:16

回答

0

既然你沒有提供代碼,我會給你一些guildines如何做到這一點。

  1. 通過調用此方法Integer.toBinaryString(x);
  2. 以前的方法將在6的情況下,它會返回110例如歸還號碼的只有nessecery位讓您int的二進制represesantation。但是你需要一個32位的表示6,所以你必須在從該方法返回的結果前添加額外的零。
  3. 創建2個計數器變量。一個用於零和一個用於零。
  4. 循環遍歷String的字符,當char == 0增加零計數器。當char == 1遞增計數器時。

希望這有助於

+0

爲什麼要轉換爲''字符串'而位是*在那裏*,''int''內? – 2014-09-23 21:16:17

7

使用Integer.bitcount(int)

int ones = Integer.bitCount(n); 
int zeros = Integer.bitCount(~n) - Integer.numberOfLeadingZeros(n); 
+0

給出答案的好工作。 OP – qbit 2014-09-23 21:06:10

+0

很棒的幫助。誰會想到他們已經實施了這個? http://docs.oracle.com/javase/7/docs/api/java/lang/Integer.html#bitCount(int) – StriplingWarrior 2014-09-23 21:06:14

+0

@xgeorgekx在回答問題方面做得好嗎?謝謝。 – 2014-09-23 21:07:55

1

幸運的是,Java有一個內置的方法:Integer.toBinaryString() 這需要一個整數值,將其轉換爲二進制,然後以String形式返回它。

或者你可以刷新你的Java技能,並創建自己的方法來做到這一點。