Barkley, who will serve as the backup to starter Andy Dalton, also took to social media to announce the news.
"I've signed with the @Bengals! Can't wait to start this next chapter of my football journey #WhoDey," Barkley posted on Twitter.
Barkley last played in a game for the Chicago Bears in 2016. He was with the San Francisco 49ers in training camp last season and signed midway into the 2017 campaign with the Arizona Cardinals, but did not play for the team.
"Just watching tape last year of what Cincy was doing last year, a lot of it is familiar. A lot of the same things are going around the league," Barkley said. "What they're bringing as staff and how they're putting plays together and creating mismatches, it's going to be a successful offense with all the weapons this team has."
Barkley will reunite with Bengals offensive coordinator Bill Lazor, who was the Eagles quarterbacks coach in 2013 when Philadelphia drafted him in the fourth round out of USC.
"We've seen him from all sides. We've been with him and we've been on the other side of him and he's not only the right fit as a player, he's the right fit as a good person," Lazor said. "He's used to the game in live action and he can play fast in game speed. He can take the beating of an NFL quarterback.
"I've seen him start and win games in the NFL and once guys have that experience, their ability to learn and absorb information accelerates because they know what it's like at that speed."
Barkley has thrown for 1,911 yards, eight touchdowns and 18 interceptions in 11 career contests with the Eagles and Bears.