2010-02-12 23 views
5

Tôi có hai dây:Ngoài Binary của 2 giá trị biểu diễn dưới dạng chuỗi

string a = "00001"; /* which is decimal 1 I've converted with next string: 
string a = Convert.ToString(2, 2).PadLeft(5, '0'); */ 
string b = "00010"; 

Tôi muốn thực hiện Ngoài ra nhị phân giữa hai nên câu trả lời sẽ là 00.011 (3).

+1

Hmm ... bài tập về nhà câu hỏi ... –

+4

Bài tập về nhà nó có thể là, nhưng vẫn khá thú vị - nó khơi gợi sự tò mò của tôi đủ rằng tôi đã có một ứng dụng Console mở và không quan tâm xung quanh với nó ngay bây giờ! ;) – Rob

+1

không thực sự là bài tập về nhà>. Alfred

Trả lời

12

System.Convert sẽ có thể làm việc cho bạn

int number_one = Convert.ToInt32(a, 2); 
int number_two = Convert.ToInt32(b, 2); 

return Convert.ToString(number_one + number_two, 2); 

(bạn có thể phải điều chỉnh dây một chút)

+0

chuỗi a = "00001"; chuỗi b = "00011"; int num1 = Convert.ToInt32 (a, 2); int num2 = Convert.ToInt32 (b, 2); chuỗi ans = Convert.ToString (num1 + num2, 2); MessageBox.Show (ans); "cảm ơn rất nhiều :) u đã lưu dự án của tôi !!!!!!!!!!!!!!!!" – Alfred

+0

tôi cần thiết để caluclate tham dự bằng cách sử dụng logic này :), như 00001 wld đại diện vắng mặt trong 1 giờ (chúng tôi haf giờ tham dự khôn ngoan) vì vậy nếu một học sinh vắng mặt trong giờ tiếp theo trong cùng một ngày 00001 - vắng mặt đầu tiên giờ 00010 - vắng mặt thứ hai giờ ------ 00011 - vắng mặt trong giờ 1 và giây: D hoạt động !! cảm ơn u – Alfred

+0

Tôi phải nói, tôi không biết rằng ghi đè cụ thể của Convert.ToInt32 tồn tại! – Rob

3

Bạn làm điều đó giống như bạn làm trên giấy. Bắt đầu từ phải và di chuyển sang trái. nếu A [i] + B [i] + mang> = 2, hãy giữ nguyên 1 và bạn di chuyển. Nếu không, hãy viết A [i] + B [i] + mang và đặt về 0.

a = "00001"; b = "00010";

carry = 0; a [4] + b [4] + carry = 1, viết 1, set carry = 0: 00001

a [3] + b [3] + carry = 1, viết 1, set carry = 0: 00011

Và cứ tiếp tục như vậy.

0

Rất dễ dàng - viết bảng tra cứu để 'thêm' các ký tự nhị phân, đừng quên mang theo nếu cần, và gửi cho tôi 50% tín dụng bạn nhận được cho tác phẩm.

0

Tôi khuyên bạn nên phân tích cú pháp dữ liệu thành ints và sau đó thêm chúng, sau đó xuất kết quả dưới dạng nhị phân.

0
private static bool[] BinaryAdd(bool[] originalbits, long valuetoadd) 
    { 
     bool[] returnbits = new bool[originalbits.Length]; 

     for (long i = 0; i <= valuetoadd - 1; i++) 
     { 
      bool r = false; //r=0 
      for (long j=originalbits.Length-1;j<=originalbits.Length;j--) 
      { 
       bool breakcond = false; 
       bool o1 = originalbits[j]; 
       if (r == false) 
       { 
        if (o1 == false) { o1 = true; breakcond = true; }//break 
        else if (o1 == true) { o1 = false; r = true; } 
       } 
       else 
       { 
        if (o1 == false) { o1 = true; breakcond = true; }//break 
        else if (o1 == true) { o1 = false; r = true; } 
       } 

       originalbits[j] = o1; 
       if (breakcond == true) 
       { 
        break; 
       } 
      } 

     } 
     returnbits = originalbits; 

     return returnbits; 
    } 
+1

Bạn nên thêm một số giải thích cho ví dụ của bạn để người mới có thể hiểu được những gì nó làm. – titanofold

Các vấn đề liên quan