整数二进制转换

在进行二进制转化之前我们要知道计算机所有的事物存储都是以二进制存储的只有0与1,整数也不例外。

整数的存储包括符号位(1位)与数值位(n-1)位。符号位位0或者1,0代表位整数,1代表为负数。数值位根据数据类型来确定多少位。在JAVA中整数类型有四种:byte(8位)   short(16位)   int(32位)   long(64位)。所以他们对应的数值位分别为7,15,31,63位。

其次我们要知道计算机存储的二进制有原码,反码,补码之分。计算机一般以补码表示数值。正整数的原码,反码,补码相同。负整数的原码,反码,补码不同。原码:符号位为1,数值位表示数值的绝对值。

                                                  反码:符号位为1,其余各位对原码取反。

                                                  补码:反码加1。

一、正整数转化成二进制

  首先要知道最左边一定是符号位,数值位从右向左为1依次代表1,2,4,8,16,32,64,128,256.。。。。

所以可以把一个正整数拆分成2的次方倍想加,这样就可以找到对应的位置。

例:

78=64+8+4+2    ————>     01001110     可以看到78拆成了64,8,4,2.这样可以知道在二进制里面代表64的位置上为1,代表8的位置上为1,同理。所以从代表64(最高位)开始想左写,有就写1,没有就写0.这样写完以后看左端补0.因为这是一个正整数,还要看他的取值范围。78在type范围之内,所以最少补一个0.

186=128+32+16+8+2——————>00000000 10111010   同上面一样,写出二进制之后,发现186已经超出了type的取值范围,所以他最小在short的取值范围之内,所以左端最少补8个0.

277=256+16+4+1————————>  00000001 00010101

注:其实应该补多少0不是自己判断的,而是题中给出的。比如第二个既可以补8个0,也可以补24个0.

 

二、负整数转化成二进制 与 二进制转化成十进制

因为负数的原码、反码、补码不相同所以写负整数有两个方法。

1、课本上的方法,先写出原码,后写出反码,然后写出补码。

原码符号位为1,数值位与其绝对值一样,所以可以用正整数的方法写出其原码的数值位。然后写反码,再写补码。

例:

-77:

原码:77=64+8+4+1————>1001101——>11001101

这就是先写出绝对值的数值位,然后把符号位写进去。

反码:10110010

补码:10110011

 

-155:

155=128+16+8+2+1——> 10011011——原码——>10000000 10011011——反码——>11111111 01100100——补码——>11111111 01100101

 

2、快捷方法

我们知道-1的二进制为11111111,所以我们可以-1出发直接写出负数的补码(计算机内存储的二进制)。

例:

-99=-1 - 64 - 32 - 2= 10011101        就相当于-1(11111111)减去一个64,把对应的位置1变成0,减去32把对应的1变成0依次下去,就是补码。

-177=-1- 128-32-16=11111111 01001111      因为-178超出了type的范围最少16位。

-128=-1-64-32-16-8-4-2-1=10000000    

 

 

二进制转化成十进制:

无论是整数的二进制转化成十进制还是负数的二进制转化成十进制,都必须先知道原码是多少,因为只有原码才是哪个位置上的1对应2的多少次方倍,才能计算相加。因为正整数的原码,反码,补码相同所以计算机里存储的二进制就相当于原码,正数二进制转化成十进制可以直接计算。而负数的原码,反码,补码都不相同所以计算负数的二进制需要先计算出负数的原码。已知负数计算机的二进制(补码),可以把数值位先取反,再+1就得到负数的原码了。(得到的原码数值位计算出来是这个负数的绝对值,在再加负号就可以。)

 

 

 

 

  • 6
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值