blob: 7c852b60460bd0a16f79bf5a8fd90d7c2c4caf20 (
plain)
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
|
'''Common functionality shared by several modules.'''
import math
def bit_size(number):
'''Returns the number of bits required to hold a specific long number.
>>> bit_size(1023)
10
>>> bit_size(1024)
10
>>> bit_size(1025)
11
'''
if number < 0:
raise ValueError('Only nonnegative numbers possible: %s' % number)
if number == 0:
return 1
return int(math.ceil(math.log(number, 2)))
def byte_size(number):
"""Returns the number of bytes required to hold a specific long number.
The number of bytes is rounded up.
"""
return int(math.ceil(bit_size(number) / 8.0))
|