计算机存储形式与进制转换

因为计算机能够识别二进制序列,所以计算机会以二进制的形式存储一个数 。对于一个正数,以原码的形式存储。对于负数,以补码的形式存储。


正数的原码,反码,补码相同:

例:1

原码:00000000 00000000 00000000 00000001

反码:00000000 00000000 00000000 00000001

补码:00000000 00000000 00000000 00000001


负数:负数以补码的形式存储(最高位是符号位,1表示负,0表示正)

例:-1

原码:10000000 00000000 00000000 00000001

反码:11111111 11111111 11111111 11111110(符号位不变,其余位按位取反)

补码:11111111 11111111 11111111 11111111(原码取反再加一)


大端小端:因为计算机存储的最小单位是字节,而一个字节是8个bit位,所以我们将整型4个字节的1表示为:00 00 00 01

例:1 

大端形式:00 00 00 01 

高字节保存在低地址处,低字节保存在高地址处。

小端形式:01 00 00 00

低字节保存在低地址处,高字节保存在高地址处。


通常我们在书写时采用大端形式,而计算机在存储时采用小端存储,我们可以来验证:

union B
{
                 int a;
                 char b;
};
int main()
{
                 union B A;
                A.a = 1;
                printf( "%c\n",A.b);
                system( "pause");
                return 0;
}

按照小端存储的形式,输出的结果应该是ASCII码为1的值。


二进制与十进制转换:

wKioL1cB-pKjFrThAABYDh-Ui3U144.png


spacer.gif 

>>右移:二进制向右移位,正数的话空出来的补0;

例:7>>2=1(注意不能写成7<<-2,这儿是错误的形式)

00000000 00000000 00000000 00000111

00000000 00000000 00000000 00000001

<<左移:空出来的位补0

例:4<<1=8;

00000000 00000000 00000000 00000100

00000000 00000000 00000000 00001000


算术移位和逻辑移位:

只有再对于负数右移时才考虑的一种情况:因为负数的最高位是符号位,所以当向右移时,空出来的位是补0还是补1.

算术移位:空出来的位补1.

逻辑移位:空出的位补0.

具体是算术移位还是逻辑移位,取决于电脑平台,所以当负数右移时其程序不具有移植性。


按位与:针对二进制的每一位进行的运算,同为1才为1,否则为0;

例7&5=5

00000000 00000000 00000000 00000111

00000000 00000000 00000000 00000101

00000000 00000000 00000000 00000101


按位或:针对二进制的每一位进行的运算,至少有一个位为1才为1,否则为0;

例:8|4=12

00000000 00000000 00000000 00001000

00000000 00000000 00000000 00000100

00000000 00000000 00000000 00001100


异或:针对二进制的每一位进行的运算,相同为0,不同为1;

例:7^4=3

00000000 00000000 00000000 00000111

00000000 00000000 00000000 00000100

00000000 00000000 00000000 00000011


取反:针对二进制的每一位进行的运算,1变0,0变1;

00000000 00000000 00011000 00000011

11111111 11111111 11100111 11111100

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值