资讯详情

byte的最小值为什么是-128,而不是-127?

常识:一个byte计算机中的数据是8位,byte是有符号也就是说最高位是符号位,其余7位是数值位。所以1个byte最大值为:0111111111=127.按理说,最小值应为11111111B=-127是对的,但很多官方或权威书籍明确提到最低值为-128。为什么?困扰了我很久。

首先,这里还有一个常识要知道,数字用于存储和计算计算机中的数字补码,为什么要这样设计?

假设数字计算使用的是原码,如-1 1、应等于0才正确,-1 转换成原码后计算1:0000001 10000001 =10000010 =-这违背了常识。

同时解决这些实际问题CPU物理结构更简单(电路上用二极管三极管加法器很麻烦,然后实现减法器是不现实的。计算机科学家已经设计了用加法代替减法的方法)。所以在计算机存储数据时,都是存储数据的补码,CPU在计算数据时,不要简单地添加。所有数据都应该转换为其补码进行计算。正数源代码反码补码是它自己的,但负数发生了变化。

比如1000001是-1的原码,反码是11111110,补码是1111111。最终计算用补码计算,即1 (-1)=00000001 11111111=(1)000000是0。这就解决了二进制-1 问题1不等于0。

那-128到底是怎么来的?

正数部分的取值范围,最终补码(正数源码反码补码相同)0万B-01111111B也就是0-127。

负数部分的补码为100001-1111111111,转回原码为11111-10000010-127 -(-1)

这里没有孟逼,最重要的一点来了。补码里还有一个没用的。是一万万B

这不能转换为原码反码,直接规定1万万B这个补码对应-128。这是神奇的-128来源

当然,原码是(一万万B)毫无意义。原码-0毫无意义,补码-0在符号数中有意义表示-2(n-1)次方。

标签: 三极管128

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台