-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathtask_3.c
More file actions
36 lines (34 loc) · 769 Bytes
/
task_3.c
File metadata and controls
36 lines (34 loc) · 769 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#include "holberton.h"
#include <stdio.h>
#include <stdlib.h>
#include <stdarg.h>
/**
* print_b - prints an unsigned integer in binary (base 2)
* @b: unsigned integer to print
* Description: print in binary number up to the value of 2,147,483,647
* Return: number of digits printed
*/
int print_b(va_list b)
{
unsigned int n, m, i, k; /* n = input number, m = max number,*/
unsigned int a[32]; /* i = iterator, j = print counter,*/
int j; /* k = end position of n value when formated into binary*/
n = va_arg(b, unsigned int);
m = 2147483648;
a[0] = n / m;
for (i = 1; i < 32; i++)
{
m /= 2;
a[i] = (n / m) % 2;
}
for (i = 0, k = 0, j = 0; i < 32; i++)
{
k += a[i];
if (k || i == 31)
{
_putchar('0' + a[i]);
j++;
}
}
return (j);
}