Задача на поиск в массиве количества единиц в двоичном коде - C#
Формулировка задачи:
Нужно чтобы выводилось количество единиц в каждой строке.
Примерно так:
58 -> 111010 -> 4
129 -> 10000001 -> 2
и т.д.
Листинг программы
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace bit2
- {
- class Program
- {
- static void Main(string[] args)
- {
- int s = 0, i;
- const int n = 10;
- int[] a = new int[n];
- int[] bases = { 2 };
- Random rnd = new Random();
- for (i = 0; i < n; i++)
- a[i] = rnd.Next(0, 255);
- Console.WriteLine("Массив:");
- foreach (int r in a) Console.WriteLine(r);
- for (i = 0; i < n; i++) s += Convert.ToString(a[i], 2).Where(x => x == '1').Count();
- Console.WriteLine("Количество единиц = {0}", s);
- foreach (int baseValue in bases)
- {
- Console.WriteLine("\nДля проверки:");
- foreach (int r in a)
- Console.WriteLine("{0,-15}\t->\t{1}", r, Convert.ToString(r, baseValue));
- }
- Console.Write("Press any key to continue . . . ");
- Console.ReadKey(true);
- }
- }
- }
Решение задачи: «Задача на поиск в массиве количества единиц в двоичном коде»
textual
Листинг программы
- static void Count(int value, out int ones) {
- ones = 0;
- while (value != 0) {
- if ((value & 1) == 1)
- ones++;
- value = (value >> 1);
- }
- }
- static void Main(string[] args) {
- const int n = 10;
- int ones;
- Random rnd = new Random();
- int[] a = new int[n];
- for (int i = 0; i < n; i++) {
- a[i] = rnd.Next(0, 255);
- Count(a[i], out ones);
- Console.WriteLine("{0} -> {1} -> {2}", a[i], Convert.ToString(a[i], 2), ones);
- }
- Console.ReadKey();
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д