请教一个c++ 变量赋值的问题

把-1赋值给8比特大小的unsigned char所得的结果是255,请问下这是怎么算的呀?-1对256取模余数的结果吗?如果是的话,请问-1对256取模余数的具体算法是怎么算的呀?

负数以补码存放,所以-1 的二进制为 1111 1111,但是unsigned char是无符号的,所以就被解释为255了。

负数以补码存放,所以-1 的二进制为 1111 1111,但是unsigned char是无符号的,所以就被解释为255了。

-1的二进制表示为(8bit):1000 0001
计算机中用补码存储-1为:1111 1111
所传给的数是无符号数,则他的值就是存储的1111 1111所代表的正数为:2^8-1=255