Add some cool queue, stacks, strings, math, bit manipulation examples (#35)

This commit is contained in:
Dr. Marina Souza, PhD 2023-07-16 17:35:14 -07:00 committed by GitHub
parent f3ee2cdf52
commit 0f455a0322
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
24 changed files with 932 additions and 13 deletions

View file

@ -0,0 +1,25 @@
## bit manipulation
<br>
### `playing_with_bits.py`
<br>
```python
> python3 playing_with_bits.py
Integer number: 144
Binary number: 10010000
Update bit: 0b10010100
Set bit: 0b10010100
Clear bit: 0b10000000
I: 144, I2: 90
B: 10010000, B2: 01011010
Count bits swapped: 4
Swap bit in place: (90, 144)
```

View file

@ -0,0 +1,59 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# author: bt3gl
def set_bit(num, i):
mask = 1 << i
return bin( num | mask )
def update_bit(num, i, v):
mask = ~ (1 << i)
return bin( (num & mask) | (v << i) )
def count_bits_swapped(a, b):
count = 0
m = a^b
while m:
count +=1
m = m & (m-1)
return count
def clear_bit(num, i):
mask = ~ (1 << i) # -0b10001
return bin(num & mask)
def swap_bit_in_place(a, b):
a = a^b
b = a^b
a = a^b
return a, b
def find_how_many_1_in_a_binary(num):
counter = 0
while num:
if num & 1:
counter += 1
num >>= 1
return counter
if __name__ == '__main__':
binary_number = '10010000'
binary_number2 = '01011010'
integer_number = int(binary_number, 2)
integer_number2 = int(binary_number2, 2)
print(f'Integer number: {integer_number}')
print(f'Binary number: {binary_number}')
print(f'\nUpdate bit: {update_bit(integer_number, 2, 1)}')
print(f'Set bit: {set_bit(integer_number, 2)}')
print(f'Clear bit: {clear_bit(integer_number, 4)}')
print(f'\nI: {integer_number}, I2: {integer_number2}')
print(f'B: {binary_number}, B2: {binary_number2}')
print(f'Count bits swapped: {count_bits_swapped(integer_number, integer_number2)}')
print(f'\nSwap bit in place: {swap_bit_in_place(integer_number, integer_number2)}')
print(f'Find how many 1 in a binary: {find_how_many_1_in_a_binary(integer_number)}')