计算机符号位可以改变吗,2进制数运算的时候符号位需要变化吗?

2进制数运算的时候符号位需要变化吗?

来源:互联网  宽屏版  评论

2009-08-14 15:38:31

分类: 电脑/网络 >> 程序设计 >> 其他编程语言

问题描述:

2进制数运算的时候符号位需要变化吗?

比如机器字长为8位:

一个2进制数***********,表示的是-127,***********+1等于什么呢?是***********还是***********还是别的什么结果?

还有***********的补码又是什么?

参考答案:

在计算机中是这样规定的,用一个数的最高一位表示正负,0为正,1为负.如0111,1111转换为十进制为127,1111,1111为-127,由此我们知一字节的范围为-127--127,其他字节的范围类推.

上面讲的都是原码表示法,可在计算机中的数据都是以补码存放的,只有这样计算时才能减轻cpu的负担(为什么,请参考“计算机基础教程”).提到补码,就不得不提反码了.计算机中是这样规定反码的,如果是正数,则按原码形式不变,如127仍为0111,1111;而如果为负数则,第一位为1,其他各位取反(即0变为1,1变为0),如原码-127(1111,1111),表示为1000,0000.

补码同上,如果是正数,则按原码形式不变,如127仍为0111,1111;如果为负数则除第一位为1外,其他各位取反加1,如-127,先取反为1000,0000,然后加1,为1000,0001.但1000,0000比较特殊,用它来表示-128,由此我们知补码可表示的范围是-128--127.

下面举几个例子:

1)原码

X=45 [X]原=0010 1101

X=-45 [X]原=1010 1101

2)反码

·正数的原码与反码相同( 正数的反码与原码相同,符号位用0表示,数值位值不变 )

X=45 [X]原=0010 1101 [X]反=0010 1101

·负数的反码符号位用1表示, 数值位为原码数值位按位取反形成,即0变1、1变0。

X=-45 [X]原=1010 1101 [X]反=1101 0010

3)补码

·正数的补码与原码相同,即符号位用0表示,数值位值不变。

X=45 [X]原=0010 1101 [X]反=0010 1101 [X]补=0010 1101

·负数的补码为反码加1

X=-45 [X]原=1010 1101 [X]反=1101 0010 [X]补=1101 0011

[-127]10=[1111 1111]原=[1000 0000]反=[1000 0001]补

[1000 0001]补+1=[1000 0010]补=[***********]原=[-126]10

可以看出结果是正确的。

有了计算机补码后,运算时可以将符号位一道参与运算

[b]分类:[/b] 电脑/网络 >> 程序设计 >> 其他编程语言[br][b]问题描述:[/b][br]2进制数运算的时候符号位需要变化吗?

比如机器字长为8位:

一个2进制数***********,表示的是-127,***********+1等于什么呢?是***********还是***********还是别的什么结果?

还有***********的补码又是什么?[br][b]参考答案:[/b][br]在计算机中是这样规定的,用一个数的最高一位表示正负,0为正,1为负.如0111,1111转换为十进制为127,1111,1111为-127,由此我们知一字节的范围为-127--127,其他字节的范围类推.

上面讲的都是原码表示法,可在计算机中的数据都是以补码存放的,只有这样计算时才能减轻cpu的负担(为什么,请参考“计算机基础教程”).提到补码,就不得不提反码了.计算机中是这样规定反码的,如果是正数,则按原码形式不变,如127仍为0111,1111;而如果为负数则,第一位为1,其他各位取反(即0变为1,1变为0),如原码-127(1111,1111),表示为1000,0000.

补码同上,如果是正数,则按原码形式不变,如127仍为0111,1111;如果为负数则除第一位为1外,其他各位取反加1,如-127,先取反为1000,0000,然后加1,为1000,0001.但1000,0000比较特殊,用它来表示-128,由此我们知补码可表示的范围是-128--127.

下面举几个例子:

1)原码

X=45 [X]原=0010 1101

X=-45 [X]原=1010 1101

2)反码

·正数的原码与反码相同( 正数的反码与原码相同,符号位用0表示,数值位值不变 )

X=45 [X]原=0010 1101 [X]反=0010 1101

·负数的反码符号位用1表示, 数值位为原码数值位按位取反形成,即0变1、1变0。

X=-45 [X]原=1010 1101 [X]反=1101 0010

3)补码

·正数的补码与原码相同,即符号位用0表示,数值位值不变。

X=45 [X]原=0010 1101 [X]反=0010 1101 [X]补=0010 1101

·负数的补码为反码加1

X=-45 [X]原=1010 1101 [X]反=1101 0010 [X]补=1101 0011

[-127]10=[1111 1111]原=[1000 0000]反=[1000 0001]补

[1000 0001]补+1=[1000 0010]补=[***********]原=[-126]10

可以看出结果是正确的。

有了计算机补码后,运算时可以将符号位一道参与运算

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值