There are 2 main reasons why a two raster with the same extent and the same pixel size have different size :
1) the pixel depth
2) the compression
in your case, dividing by 2 might produce a float while your input is integer (e.g. unsigned 8bit). Furthermore, the input could be compressed while the output is not. For full control on the output type, you could use gdal_calc or OTB bandMath (the latter is available through your QGIS interface). For the pixel depth, you can specify int() in the rastercalculator.
You can also use gdal_translate (or raster > conversion > translate in the QGIS interface) to convert your output after processing with
-ot Byte for outputs in 0-255 and minimum size,
-co COMPRESS=LZW for the compression (LZW is a type of compression given as example here, there are others depending on your needs)
For large raster, as mentioned by @Kersten, tiling is also recommended
Those options can be used with any gdal command (you can add them manually in the QGIS interface) or with the extented filename of the OTB application e.g.