
为什么c语言负数是以补码形式存放的?
2个回答
展开全部
计算机的硬件,只有加法器。
负数、减法,都必须用加法来完成。
你看十进制:
24 - 1 = 23
24 + 99 = (一百) 23
舍弃进位,+99 可以当做-1 进行运算。
+99 就是-1 的补数。
补数(补码),就是一个“代替负数进行运算的正数”。
对于 2 位 10 进制数,求补数的公式:
补数=负数+10^2。
计算机中,用二进制,就称为补码。
对于 8 位 2 进制数,求补码的公式:
补码=负数+2^8。
-1 的补码是:-1 + 256 = 255 = 1111 1111。
-2 的补码是:-2 + 256 = 254 = 1111 1110。
。。。
-128 的补码是:128 = 1000 0000。
求补码,不要用“原码取反加一”。
那个方法,是无法求出-128 的补码的。
而且,你也不能理解补码的意义。
---------------------
为什么 C 语言负数是以补码形式存放的?
借助于补码,就统一了加减法,硬件就得以简化。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询