西安做网站那家好,电子产品网站建设策划书,北京服务设计,手机论坛首先要知道的是计算机中补码的表示是唯一且连续的#xff01;我想这是计算机为什么不用原码来表示的一个原因#xff01;另外#xff0c;以补码形式来运算的话#xff0c;设计的逻辑电路会简单很多#xff0c;会少很多逻辑运算器件#xff0c;所以计算机采用补码的形式来…首先要知道的是计算机中补码的表示是唯一且连续的我想这是计算机为什么不用原码来表示的一个原因另外以补码形式来运算的话设计的逻辑电路会简单很多会少很多逻辑运算器件所以计算机采用补码的形式来运算。
比如说0的原码有两种
0 00000000 00000000
-0 10000000 00000000
而补码只有一种00000000 00000000
怎么求补码呢最简单的是符号位不变其他位换号再加1注意加1的时候符号位参与运算如果最高位有溢出则舍去
例 - 0的补码
原码10000000 00000000
符号位不变其他位换号11111111 1111111
加1 11111111 11111111
00000000 00000001 (1)00000000 00000000
(1)被舍去。
我们知道16位二进制数可以表现2的16次方个编码而在补码中零的编码只有一个也就是补码中会比原码多一个编码出来这个编码就是1000000000000000因为任何一个原码都不可能在转成补码时酿成1000000000000000。
所以人为规定1000000000000000这个补码编码为 - 32768。所以补码系统中范围是 - 3276832767。
因此实际上二进制的最小数确实是1111111111111111只是二进制补码的最小值才是1000000000000000而补码的1111111111111111是二进制值的 - 1。
而 - 32768的补码因为16位的话在计算机中 - 32768不能用原码表示出来。所以只能通过 - 32767 - 1来求
-1的补码为11111111 11111111
-32767的补码为10000000 00000001 所以加起来为(1)1000000 00000000 (1)被舍去了。 又因为10000000 0000000没有用来表示其他任何数所以10000000 00000000就被用来表示 - 32768这也验证了补码的唯一性和连续性而且这也证明了16位的整数的范围是“ - 32768~32767”。不过16位整数的原码的范围只有“ - 32767~32767”。