日博官网

返回首页
当前位置: 主页 > 日博备用网址 >

补养码的数学规律

时间:2018-10-09 04:49
  

  计算机是用n位0和1到来体即兴数字的,此雕刻么很轻善体即兴正数,条是怎么体即兴正数呢?

  人类聪慧的父亲脑想到了用第壹位到来体即兴标记,0代表正数,1代表正数。此雕刻种体即兴方法最好了松,叫做原码。

  条是计算机在计算的时分,为了信募化,需寻求把减法当做加以法运算。此雕刻个很骈杂,正数不坚硬是干此雕刻个的吗?譬如2-1=2+(-1)。

  条是正数假设依照原码体即兴的话,就不好办了,譬如:

  2-1=2+(-1)=00000010+10000001=10000011=-3

  露然是错的,因此人类习惯的方法无法满意此雕刻个需寻求,根本缘由在于标记位的伸入不快宜计算机运转规律。

  这么,肿么办呢?

  比值先伸见模的概念:数学上7位数却以体即兴[0, 127]共128个值,超越128就会溢出产,这么128坚硬是7位数的模。

  而模壹定的情景下,减法邑却以更换成加以法到来运算,譬如:

  你要把钟表往前拨2个小时,你却以把它往前拨10个小时到来完成。此雕刻边-2就转募化为了+10。

  下面看同余数的数学定义:

  假设a和b关于壹个数m的余数相反,成a和b为m的同余数,容许称a和b互为补养数,记做:

  a ≡ b (mod m)

  这么效实到来了,正数的余数何以定义?

  数学上是

  坚硬是:x对y的余数等于x减去y迨上x与y的商的降谪人间。

  而露然,壹个数的余数壹定是它的同余数。

  此雕刻么假设你想算a-b的话(a,b邑是正数),却以算成a+(-b的补养数),譬如:

  模为128的情景下,2-1=2+(-1)=2+(128-1)=128+1,鉴于溢出产,结实是1

  到底算对了!撒花道贺!条是还拥有下壹个效实:

  给定正数的原码,何以让计算机便宜的算出产正数的补养数?

  假设用n位到来体即兴数,这么-a=2^(n-1)-a-2^(n-1),就中a为正数

  而a体即兴成10进制的话,

  是a=k0*2^0+k1*2^1+k2*2^2+...k(n-2)*2^(n-2),为什么是n-2呢?鉴于原码要剩壹位给标记位,因此条要n-1位拥有效位。

  而2^(n-1)=1+1*2^0+1*2^1+1*2^2+...+1*2^(n-2),因此

  2^(n-1)-a=1+(1-k0)*2^0+(1-k1)*2^1+(1-k2)*2^2+...(1-k(n-2))*2^(n-2),也坚硬是摒除了最高位之外面,其他片断取反加以1。

  而剩的-2^(n-1),它的补养数是2^(n-1),也坚硬是还要又加以上个最高位为1其他全为0的数.

  这么就得出产我们教养科书的定论:

------分隔线----------------------------
最新文章