You have to consider how the $p$-value was determined. That will dictate how you should move between the $p$-value you have and the one you want. In general, a $p$-value is the proportion of possible values (e.g., test statistics, mean differences, etc.) that are as far away or further than your value under a given distribution.
In standard textbook presentations, the first step is to compute the area under the curve to the left of the value as you move from $-\infty$ to $\infty$. It may help to examine the figure below. If that is all you did (e.g., by looking up the $p$-value in a table, or what your software did), that constitutes the lower one-tailed $p$-value. If you wanted the upper one-tailed $p$-value, you would subtract that value from $1$ (not double or halve it).
$\hspace{12mm}$
However, it is pretty standard that statistical software will default to providing a two-tailed $p$-value. (To move from the textbook value above, you would multiply the $p$-value by two, if $<.5$—such as working with the white area in the figure above, or subtract from $1$ and then multiply by two, if $>.5$—such as working with the gray area above.) If you are starting from a two-tailed $p$-value, and you wanted to compute a one-tailed $p$-value, you need to determine which tail you are in relative to the tail you want to assess. Start by dividing the two-tailed $p$-value by $2$. Then, if your result is in the tail you are after (e.g., you want to know if $\bar x$ is significantly less than $\mu_0$ and $\bar x < \mu_0$), you are done. If your observed value is in the wrong tail, subtract the quotient from $1$.
It may help to walk through a simple calculation. For simplicity, imagine you test an observed sample mean (say, $.75$) against a null population mean value (call it $0$), when the population is known to be normally distributed and the standard deviation is known to be $1$. Your software returns a two-tailed $p$-value (viz., $.453$) and you want...
- the two-tailed $p$-value: Stop, you're already there.
- the $p$-value for the test that $\bar x > \mu_0$: $.453/2 = .227$.
- the $p$-value for the test that $\bar x < \mu_0$: $.453/2 = .227\quad \Rightarrow \quad 1-.227= .773$.
If your software returned one of the above one-tailed $p$-values, and you wanted to determine the two-tailed $p$-value, you would reverse one of the processes listed above depending on whether you were in the tail you wanted or not.