第十九章 JAVA进制之初学习

本文详细介绍了JAVA中的进制转换和位运算,包括二进制的基本概念,二进制的位运算,如按位与、按位或、异或和取反等,以及JDK内置的进制转换方法。此外,还探讨了JAVA中数据类型的进制表示和位操作在实际开发中的应用,例如数据的序列化和反序列化。
摘要由CSDN通过智能技术生成
第一节 进制的基本概念

位进制是人们为了计数和运算方便而约定的计数系统,我们的计算机中一般采用的就是二进制。那什么是二进制呢?十进制是指10个数字,0-9,逢10进1;二进制则是指2个数,0和1,逢2进1,一个数在不同的位置上所代表的值会不同。十进制是我们现实生活中经常使用的,我们也比较熟悉,那二进制是如何用来表示一个数呢?用十进制的数举例来说8=1000;3=0011;2=0010;9=1001;6=0110。整数8的二进制=1000,从右往左数,前三位是0,第四位是1,也就是2的3次方,2^3 * 1+2^2 * 0+2^1 * 0+2^0 * 0=8。
十进制转换成二进制的方法,我们一般把需要转换的数作为一个除数,除以2,得到的余数不是1就是0,把取到的余数取出倒着读就是该数的二进制。计算机中广泛使用二进制,可以使其运算简单,简化了计算机的结构。当然计算机中还有其它的进制,如八进制(0-7,逢八进一,标志的开头用0表示),十六进制(0-9,A,B,C,D,E,F,标志的开头用0x表示 ),在这里可以看到8和16分别是2^3和2^4,因为都是2的整数次方,所以会常用一些。

十进制 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
二进制 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111
八进制 0 1 2 3 4 5 6 7 10 11 12 13 14 15 16 17
十进制 0 1 2 3 4 5 6 7 8 9 A B C D E F

十进制转换二进制,使用需要转换的数除以2取余,倒着输出余数就是该数的二进制,八进制同理,也是用数除以8,然后得到余数从下往上数即可,十进制转换八进制,十六进制都是一样的。二进制,八进制,16进制转换10进制,也是按权展开,相加即得十进制数。

第二节 二进制的位运算
运算符 & | ^ ~ << >> >>>
运算 异或 取反 左移 右移 无符号右移
示例 6&3=2 6|3=7 6^3=5 ~6=-7 3<<2=12 3*2*2=12 3>>1=1 3/2=1 3>>>1=1 3/2=1

程序中所有的数都是以二进制存储的,位运算就是直接对二进制进行的位操作。
1.按位与&运算,两位全为1,结果才为1。0&0=0;0&1=0;1&0=0;1&1=1。与位算的特殊用法:

  • 清零,如果想将一个单元清零,即使其全部二进制为1,只需要与一个各位都是0的数值相与,结果为零;
  • 取一个数中的指定位。举例说取某数的低四位,只需要将这后四位与1111相与,是1则还是1,是0则还是0。10101110&00001111=00001110

2.按位或|运算,两位只要有一数为1,结果就为1。0|0=0;0|1=1;1|0=1;1|1=1 或运算的特殊用法:
常常用来对数的某些位,置1,设置为1。取一个X=10100000 x|00001111=10101111。
3.异或^运算,两个相应位为异,值不同,则该结果为1,否则为0,0^0=0; 0^1=1; 1^0=1; 1^1=0;异或运算的特殊用法:

  • 使特定位反转,对应某数要反转的位置,使其与1进行异或运算,如原数为0,则0^1=1;原数为1,1^1=0;
  • 与0相异或,保留原值。
  • 与本身异或值为0。

4.取反运算~,对一个二进制数按位取反,即0变成1,1变成0。
5.左移运算<<,将一个运算对象的各二进制位全部向左移若干位(左边的二进制位丢弃,右边补0)。若左移时舍弃的最高位不包含1,则每左移一位相当于该数*2。举例来说:2的二进制码为10,这里10的前面实际是有若干个0,32位:00000000 00000000 00000000 00000010 左移1位变为100。2<<1=4。
6.右移运算

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值