码迷,mamicode.com
首页 > 其他好文 > 详细

int8

时间:2020-03-21 23:22:26      阅读:67      评论:0      收藏:0      [点我收藏+]

标签:补码   相对   多少   整数   相加   特殊   运算   负数   范围   

有符号int8的范围(-128-127)

可-128是怎么来的

我们先得懂整型在计算机中是如何存储的?

数值 原码 反码 补码
1 0 000 0001 0 000 0001 0 000 0001

正数的反码是本身,正数的补码是本身

数值 原码 反码 补码
-1 1 000 0001 1-111- 1110 1 -111 -1111

负数的反码是除符号位,按位取反
负数的补码是 反码+1

这样的设计为了什么?
我们接下来,扩展一下,就是整型的加减操作是如何做的?

-1 + 1 = 0
俩者的原码相加 -2,显然不是
俩者的反码相加 -127,显然不是
俩者的补码相加 0, 这是巧合吗?并不是。这就解答了我们上边的问题。在计算机里,整型数据是以补码的形式存储,
引进补码的作用是为了让计算机更方便做减法

一个负数总有(在当前范围内)一个整数与之相对应

那他们之间的关系是什么呢?我们想快速的知道它是谁?
我们 设y为那个神秘数字, x 为那个负数。bits 为范围位数,int8,bits = 8

(2 ^ 8) + x = y

x = -1 那 y = 255
255在计算机怎么表现 1111-1111
他是一个超界限的值,只用于理解一个负数怎样存储

回到最终问题,-128怎么来的?

0000-0000 =》 0111-1111 一共128个
1000-0001 =》 1111-1111 一共127个
那是不是缺一个-128,那-128怎么表示呢?
其实-128 就是这样表示的 1000-0000,这不是-0吗?
如果有人问你,有符号int8 ,1000-0000 是多少?告诉他,-128,
你可以理解为 它的符号位和数值位重合

怎么证明呢?
-127 + (-1)就是 -128 符号位不参与运算

-127补码 -1补码 -128
1000 0001 1111-1111 1000 0000

特殊的是,它的补码同源码,且不同于反码,它既不是整数又不是负数,那它是啥?发人深思,自己领会,其中奥妙,妙不可言。

数值 原码 反码 补码
-128 1000 0000 1111-1111 1000 0000

int8

标签:补码   相对   多少   整数   相加   特殊   运算   负数   范围   

原文地址:https://blog.51cto.com/rhino/2480627

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!