diff --git a/pystencils/backends/cbackend.py b/pystencils/backends/cbackend.py
index 01b2fb33e181de6e0d400b3637dc8770614c38ae..92a6080c73389a815163157efefac2186aeee09e 100644
--- a/pystencils/backends/cbackend.py
+++ b/pystencils/backends/cbackend.py
@@ -13,7 +13,7 @@ except ImportError:
     from sympy.printing.ccode import CCodePrinter  # for sympy versions < 1.1
 
 from pystencils.integer_functions import bitwise_xor, bit_shift_right, bit_shift_left, bitwise_and, \
-    bitwise_or, modulo_ceil
+    bitwise_or, modulo_ceil, int_div, int_power_of_2
 from pystencils.astnodes import Node, KernelFunction
 from pystencils.data_types import create_type, PointerType, get_type_of_expression, VectorType, cast_func, \
     vector_memory_access, reinterpret_cast_func
@@ -301,6 +301,10 @@ class CustomSympyPrinter(CCodePrinter):
                 return "({})".format(self._print(1 / sp.sqrt(expr.args[0])))
         elif expr.func in infix_functions:
             return "(%s %s %s)" % (self._print(expr.args[0]), infix_functions[expr.func], self._print(expr.args[1]))
+        elif expr.func == int_power_of_2:
+            return "(1 << (%s))" % (self._print(expr.args[0]))
+        elif expr.func == int_div:
+            return "((%s) / (%s))" % (self._print(expr.args[0]), self._print(expr.args[1]))
         else:
             return super(CustomSympyPrinter, self)._print_Function(expr)
 
diff --git a/pystencils/integer_functions.py b/pystencils/integer_functions.py
index b1ac944a977717405b1f8c39c2f5a0ceeea14e66..2fbc1ed673a230112ff7266922a7dc0f06a0eba2 100644
--- a/pystencils/integer_functions.py
+++ b/pystencils/integer_functions.py
@@ -8,6 +8,8 @@ bit_shift_right = sp.Function("bit_shift_right")
 bit_shift_left = sp.Function("bit_shift_left")
 bitwise_and = sp.Function("bitwise_and")
 bitwise_or = sp.Function("bitwise_or")
+int_div = sp.Function("int_div")
+int_power_of_2 = sp.Function("int_power_of_2")
 
 
 # noinspection PyPep8Naming