关于C语言中模的问题

来源:百度知道 编辑:UC知道 时间:2024/07/04 08:20:14
刚看的C语言教程 请问 16位0,1代码的模为什么是1后面16个0
求-5的补码 用模形式 为什么是 1后面16个0 减去 101后能得到13个1 和011 ??希望大侠能看懂 解答。。。。
就是为什么16位0,1代码的模是10000000000000000 -5的补码为什么是 用模10000000000000000 减去 101 得到了1111111111111011

其实无所谓模不模。只要弄懂补码的意义就可以了。
正数的补码是本身,负数的补码是取反加一。
例如-5,本来是00000...101, 取反111...010, 加一,111...011。
这才是补码的意义所在。但是取反加一这个操作对于人类而言运算较为不便,
于是才有用个模去减去其绝对值。你会发现两个结果相等。
8位的模是10000000,16位模10000...
补码很有用,因为它比别的表示法多表示一位。16位补码表示的范围为
2^16-1 ~~ -(2^16)

不知所云。