计算机二进制的转行
1.整数在计算机中的存储原理
其实任何数据在计算机中都是以二进制表示的。那这里肯定有人问,什么是二进制啊?所谓二进制其实就是一种数据的表示形式,它的特点是逢2进1。
数据的表示形式除了二进制(逢2进1),八进制(逢8进1)、还有十进制(逢10进1)、十六进制(逢10进1)等。
对于二进制绝大多数同学,应该是非常陌生的。 没关系!来,大家跟着我的思路,你就知道二进制是怎么表示数据的了。
1.二进制中只有0和1两个数首先十进制的0和二进制的0是一样的,十进制的1和二进制的1也是 一样的。但是十进制中 有2,但是二进制中就没有2了2.那么二进制是如何表示十进制的2呢?1
+ 1
—————————— 10 这里两个1相加,结果为2,由于二进制满2进1,所以最终结果103.那么二进制是如何表示十进制的3呢?前面我们已经知道二进制10表示十进制的2,那么二进制10+1就表示十进制的3啊!10
+ 1
—————————11 十进制的3对应的二进制是114.那么二进制是如何表示十进制4的呢?前面我们已经知道二进制11表示十进制的4,那么11+1就表示十进制的5啊11
+ 1
—————————100 十进制的5对应的二进制是100你找到规律了吗? 你能不能依次写出5的二进制、6的二进制?
前面每算一个二进制数据都是采用+1的方式,逢2进1,一个一个算出来的。有没有更快的算出十进制对应二进制的方法呢? 这里学习一种方式:叫做除2取余法。
2.除2取余法
1.怎么做呢?答:让十进制数据连续除以2,直到商为0,余数反转2.举例1:把十进制6转换为二进制 商 余数6/2 3 03/2 1 11/2 0 1然后把余数反转:6对应的二进制是1103.举例2: 把十进制13转换为二进制商 余数13/2 6 16/2 3 03/2 1 11/2 0 1然后把余数反转:10对应的二进制是11014.练习1:你能把十进制7转换为二进制吗?自己试试吧!
3. 二进制到十进制的转换
前面我们学习了十进制可以转二进制,采用的是除2取余法,那么我们反过来能不能把二进制转换为十进制呢?
这里给大家介绍一种计算方式叫做:8421码
为了便于理解,我们先在看一下十进制怎么转十进制,主要是为了让大家看到演化过程。
1.十进制转十进制比如我们把12345进行分解:12345 = 10000 + 2000 + 300 + 40 + 5= 1*10^4 + 2*10^3 + 3*10^2 + 5*10^0我们发现:在十进制中如果把十进制的每一位从右往左从0开始编一个号,假设这一位数字是a, 那么这一位数表示的值就是:a*10^n;----------------------------------------------------------------------二2.二进制转十进制:类比十进制:如果把二进制的每一位从从右往左0开始编一个号用n表示,假设二进制的每一位是a,那么这一位表示的十进制值是:a*2^n1)假设二进制的每一位都是1:128 64 32 16 8 4 2 1 每一位表示的十进制:a*2^n7 6 5 4 3 2 1 0 编号:n1 1 1 1 1 1 1 1 二进制的每一位:a二进制 十进制11111111 = 1*2^7 + 1*2^6 + 1*2^5 + ... + 1*2^0= 128 + 64 + 32 + ... + 1= 2552)假设二进制的为0010001128 64 32 16 8 4 2 1 每一位表示的十进制:a*2^n7 6 5 4 3 2 1 0 编号:n0 0 1 0 0 0 0 1 二进制的每一位:a二进制 十进制00001101 = 0*2^7 + 0*2^6 + 1*2^5 + ... + 1*2^0= 0 + 0 + 32 + ... + 1= 333)8421码:从右往左给二进制的每一位数依次按照1 2 4 8...标记128 64 32 16 8 4 2 10 0 1 0 0 0 0 1-----------------------------只需要将1位上的数字加起来,就是二进制对应的十进制二进制 十进制00001101 = 8+4+1= 130000111 = 4+2+1= 70001111 = 8+4+2+1= 25
4. 二进制转八进制
前面我们说计算机中数据都是采用二进制来存储的,但是二进制阅读和编写起来都不太方便。为了便于阅读和书写,又推出了八进制、十六进制。
1.运算规则:把二进制的每三位一组合,然后对每三位用8421码进行计算,最后拼接到一起原因:因为111,的值是7, 再大满7就需要往进位了。 2.把二进制11001110转换为八进制数据01 100 001 二进制每三位一组合1 4 1 每一组进行8421码运算----------八进制:141
5. 二进制转十六进制
1.运算规则:把二进制的每四位一组合,然后对每四位用8421码进行计算,最后拼接到一起原因:因为1111,的值是15, 再大1满16了就需要往进位了。 2.举例:把二进制11001110转换为十六进制数据0110 0001 二进制每四位一组合6 1 每一组进行8421码运算----------十六进制:613.练习:把111100转换为十六进制0011 11003 12 由于十六进制中有a,b,c,d,e,f分别表示10,11,12,13,14,15-----------十六进制:3c
6.不同进制在Java程序中的书写格式
System.out.pirntln('a'+1); //98
System.out.pirntln(0b01100001); //97
System.out.pirntln(0141); //97
System.out.pirntln(0x61); //97