How to contact us

Join the "coding" channel on slack! That is the only place where we will be answering questions or sending announcements about lessons. If you have a question please contact us there.

How to join

  • Click on "add channels" below the list of channels
  • Click on "browse channels"
  • Search for "coding"
  • Click the green "Join" button on the right

Learning Objectives

CollegeBoard Requirements for Binary

DAT-1.A: Representing Data with Bits

Basic Information

  • Bit is short for binary digit, and represents a value of either 0 or 1.
    • A byte is 8 bits.
  • Sequences of bits are used to represent different things.
    • Representing data with sequences of bits is called abstraction

Practice Questions:

  1. How many bits are in 3 bytes? 3 * 8 = 24 bits

  2. What digital information can be represented by bits?

Any digital information can be represented as long as it is encoded in the binary form.

  1. Are bits an analog or digital form of storing data? What is the difference between the two?

Bits are digital data what this means is that that its only got two states 1 or 0 however analog can be a wide range of values or example, something like the the arrow keys on a controller would be digital but something like a joystick on the controller would be more like an analog type of data.

Examples

  • Boolean variables (true or false) are the easiest way to visualize binary.
    • 0 = False
    • 1 = True
import random

def example(runs):
    # Repeat code for the amount of runs given
    while runs > 0:
        # Assigns variable boolean to either True or False based on random binary number 0 or 1.
        boolean = False if random.randint(0, 1) == 0 else True 

        # If the number was 1 (True), it prints "awesome."
        if boolean:
            print("binary is awesome")
            
        # If the number was 2 (False), it prints "cool."
        else:
            print("binary is cool")
            
        runs -= 1
     
# Change the parameter to how many times to run the function.   
example(10)
binary is awesome
binary is cool
binary is awesome
binary is awesome
binary is awesome
binary is awesome
binary is cool
binary is cool
binary is cool
binary is awesome

DAT-1.B: The Consequences of Using Bits to Represent Data

Basic Information

  • Integers are represented by a fixed number of bits, this limits the range of integer values. This limitation can result in overflow or other errors.
  • Other programming languages allow for abstraction only limited by the computers memory.
  • Fixed number of bits are used to represent real numbers/limits

Practice Questions:

  1. What is the largest number can be represented by 5 bits?

2^n-1 = (2^5) - 1 = 31

  1. One programming language can only use 16 bits to represent non-negative numbers, while a second language uses 56 bits to represent numbers. How many times as many unique numbers can be represented by the second language?

2^50/2^16 = 2^40 is the amount of unique numbers that can be represented by the second language

  1. 5 bits are used to represent both positive and negative numbers, what is the largest number that can be represented by these bits? (hint: different than question 1)

1 bit is used to represent positive or negative so 2^4 -1 = 15 for the largest number and -2^4 = -16

Examples

import math

def exponent(base, power):
    # Print the operation performed, turning the parameters into strings to properly concatenate with the symbols "^" and "=".
    print(str(base) + "^" + str(power) + " = " + str(math.pow(base, power)))

# How can function become a problem? (Hint: what happens if you set both base and power equal to high numbers?)
exponent(5, 2)
5^2 = 25.0

DAT-1.C: Binary Math

Basic Information

  • Binary is Base 2, meaning each digit can only represent values of 0 and 1.
  • Decimal is Base 10, meaning eacht digit can represent values from 0 to 9.
  • Conversion between sequences of binary to decimal depend on how many binary numbers there are, their values and their positions.

Practice Questions:

  1. What values can each digit of a Base 5 system represent?

They can represent 0, 1, 2, 3, and/or 4

  1. What base is Hexadecimal? What range of values can each digit of Hexadecimal represent?

The Base for hexadecimal is 16 so it can represent 16 values: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, and/or F

  1. When using a base above 10, letters can be used to represent numbers past 9. These letters start from A and continue onwards. For example, the decimal number 10 is represented by the letter A in Hexadecimal. What letter would be used to represent the Base 10 number 23 in a Base 30 system? What about in a Base 50 system?

You do the remainder of 23 by 30 and you would get 23 and so the number 23 in base30 is H and we do the same for the base 50 You do the remainder of 23 by 50 which is 23 and would be X

Examples

  • Using 6 bits, we can represent 64 numbers, from 0 to 63, as 2^6 = 64.
  • The numbers in a sequence of binary go from right to left, increasing by powers of two from 0 to the total amount of bits. The whole number represented is the sum of these bits. For example:
    1. 111111
    2. 2^5 + 2^4 + 2^3 + 2^2 + 2^1 + 2^0
    3. 32 + 16 + 8 + 4 + 2 + 1
    4. 63
  • Fill in the blanks (convert to decimal)

    1. 001010 = 2 + 8 = 10
    2. 11100010 = 2 + 32 + 64 + 128 = 226
    3. 10 = 2
  • Fill in the blanks (convert to binary)

    1. 12 = 1100
    2. 35 = 100011
    3. 256 = 10000000

Hacks & Grading (Due SUNDAY NIGHT 4/23)

  • Complete all of the popcorn hacks (Fill in the blanks + run code cells and interact + Answer ALL questions) [0.3 or nothing]
  • Create a program to conduct basic mathematical operations with binary sequences (addition, subtraction, multiplication, division) [0.6 or nothing]
    • For bonus, program must be able to conduct mathematical operations on binary sequences of varying bits (for example: 101 + 1001 would return decimal 14.) [0.1 or nothing]
def binary_addition(x, y):
    return bin(int(x, 2) + int(y, 2))[2:]
    # , 2 turns the first binary value and recognizes it as a binary value
    # [2:] gets rid of any non integer values
def binary_subtraction(x, y):
    return bin(int(x, 2) - int(y, 2))[2:]
    # same thing as above but subtracts
def binary_multiplication(x, y):
    return bin(int(x, 2) * int(y, 2))[2:]
    # same thing bur multiplication
def binary_division(x, y):
    quotient = bin(int(x, 2) // int(y, 2))[2:]
    # same thing but divison
    remainder = bin(int(x, 2) % int(y, 2))[2:]
    # calculates for the remainder
    return quotient + " remainder: " + remainder


def binary_operations(x, y, operator):
    try:
        assert operator == '+' or operator == '-' or operator == '*' or operator == '/' # makes sure that the inputted operator is true
        if operator == '+':
            return "Final Binary Value = " + binary_addition(x, y)
        elif operator == '-':
            return "Final Binary Value = " + binary_subtraction(x, y)
        elif operator == '*':
            return "Final Binary Value = " + binary_multiplication(x, y)
        elif operator == '/':
            return "Final Binary Value = " + binary_division(x, y)
    except:
        AssertionError # cleans up any junk operations
        print("Your selection of operation is not supported")

def input():
    cont = 'y'
    if cont == 'y':
        print("\nInput the first binary number")
        x = input("Input the first binary number")
        print("\n" + x)

        print("\nInput your second binary number")
        y = input("Input your second binary number")
        print("\n" + y)

        print("\nInput the operation your trying to preform")
        operator = input("Input the operation your trying to preform")
        print("\n" + operator)
        
        binary_operations(x, y, operator)

        print("Would you like to continue?")
        cont = input("Would you like to continue?")
    else:
        return "See you later!"

input()
Input the first binary number
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
/home/jishnus/vscode/CSP-tri1/_notebooks/2023-04-21-P3M-BinaryLesson.ipynb Cell 8 in <cell line: 56>()
     <a href='vscode-notebook-cell://wsl%2Bubuntu/home/jishnus/vscode/CSP-tri1/_notebooks/2023-04-21-P3M-BinaryLesson.ipynb#X10sdnNjb2RlLXJlbW90ZQ%3D%3D?line=52'>53</a>     else:
     <a href='vscode-notebook-cell://wsl%2Bubuntu/home/jishnus/vscode/CSP-tri1/_notebooks/2023-04-21-P3M-BinaryLesson.ipynb#X10sdnNjb2RlLXJlbW90ZQ%3D%3D?line=53'>54</a>         return "See you later!"
---> <a href='vscode-notebook-cell://wsl%2Bubuntu/home/jishnus/vscode/CSP-tri1/_notebooks/2023-04-21-P3M-BinaryLesson.ipynb#X10sdnNjb2RlLXJlbW90ZQ%3D%3D?line=55'>56</a> input()

/home/jishnus/vscode/CSP-tri1/_notebooks/2023-04-21-P3M-BinaryLesson.ipynb Cell 8 in input()
     <a href='vscode-notebook-cell://wsl%2Bubuntu/home/jishnus/vscode/CSP-tri1/_notebooks/2023-04-21-P3M-BinaryLesson.ipynb#X10sdnNjb2RlLXJlbW90ZQ%3D%3D?line=35'>36</a> if cont == 'y':
     <a href='vscode-notebook-cell://wsl%2Bubuntu/home/jishnus/vscode/CSP-tri1/_notebooks/2023-04-21-P3M-BinaryLesson.ipynb#X10sdnNjb2RlLXJlbW90ZQ%3D%3D?line=36'>37</a>     print("\nInput the first binary number")
---> <a href='vscode-notebook-cell://wsl%2Bubuntu/home/jishnus/vscode/CSP-tri1/_notebooks/2023-04-21-P3M-BinaryLesson.ipynb#X10sdnNjb2RlLXJlbW90ZQ%3D%3D?line=37'>38</a>     x = input("Input the first binary number")
     <a href='vscode-notebook-cell://wsl%2Bubuntu/home/jishnus/vscode/CSP-tri1/_notebooks/2023-04-21-P3M-BinaryLesson.ipynb#X10sdnNjb2RlLXJlbW90ZQ%3D%3D?line=38'>39</a>     print("\n" + x)
     <a href='vscode-notebook-cell://wsl%2Bubuntu/home/jishnus/vscode/CSP-tri1/_notebooks/2023-04-21-P3M-BinaryLesson.ipynb#X10sdnNjb2RlLXJlbW90ZQ%3D%3D?line=40'>41</a>     print("\nInput your second binary number")

TypeError: input() takes 0 positional arguments but 1 was given