It depends on your mathematical background. I don’t know of any books about this at the level below senior undergraduate mathematics. If you are familiar with sets I can outline the idea behind how to define non negative integers.
We assume the empty set exists and call this 0. We define 1 to be the set containing 0. So 1 = {0}. We define 2 to be the set containing 0 and 1. So 2 = {0, 1}.
Let’s look at this set: {a, b}. I know this set has size 2 and not 1 because I can map {a, b} to {0, 1} in a one-to-fashion. I can’t map {a, b} to {0} in a one-to-one fashion. We say any set has size 2 if it can be mapped to {0, 1} in a one-to-one fashion.
We assume the empty set exists and call this 0. We define 1 to be the set containing 0. So 1 = {0}. We define 2 to be the set containing 0 and 1. So 2 = {0, 1}.
Let’s look at this set: {a, b}. I know this set has size 2 and not 1 because I can map {a, b} to {0, 1} in a one-to-fashion. I can’t map {a, b} to {0} in a one-to-one fashion. We say any set has size 2 if it can be mapped to {0, 1} in a one-to-one fashion.