C语言中负数的存储方式

详细介绍负数的文章:

https://blog.csdn.net/daiyutage/article/details/8575248

1.以char类型举例,其取值范围是 -128 ~ 127,即-2E7 ~ 2E7-1, 用最高位表示其符号,0表示正数,1表示负数。数值以补码形式存储。正数的补码就是该正数本身,负数的补码需要转化,如下:
    1>.对负数取绝对值,用二进制表示
    2>. 对每一位取反;
    3>. 对该数加1。
注意:char类型的0 没有+0 和 -0 的区分,即使想区分,按照上述操作,得到的都是 0000 0000

举例:-1 取绝对值0000 0001 -> 取反1111 1110 ->加1得到 1111 1111

下面是一些数值的补码格式:

-128 存储数值 1000 0000     

-127 存储数值 1000 0001

-126 存储数值 1000 0010

.....

-3    存储数值 1111 1101

-2    存储数值 1111 1110

-1    存储数值 1111 1111

0    存储数值 0000 0000

1    存储数值 0000 0001

2    存储数值 0000 0010

3    存储数值 0000 0011

...

125 存储数值 0111 1101

126 存储数值 0111 1110

127 存储数值 0111 1111

 

posted @ 2019-03-03 21:24  靖意风  Views(4592)  Comments(0Edit  收藏  举报