zoukankan      html  css  js  c++  java
  • 数据类型和运算符

    数据类型

    Java数据类型分为基本数据类型和引用类型。基本类型分为数值类型和boolean类型,数值类型又包含整型和浮点型;引用(指针)类型分为类、接口和数组类型、null类型。

    Java数据类型转换

    1. 基本类型的自动类型转换和强制转换
    2. 表达式类型的自动提升

    进制转换

    1. 二进制
      二进制位简称“位”,一个二进制位包含的信息量称为一比特。二进制的最高位为符号位,1代表负数,0代表正数,其余位表示数的绝对值。
    2. 二进制和十进制转换
      • 二进制每位对应的十进制位2的n-1次方,如111对应2的平方,2的1次方,2的0次方,从右往左依次为1-2-4-8-16-32---
      • 二进制转十进制:每位乘2的n-1次方,之后相加。如:10101的十进制为116+08+14+02+1*1=21
      • 十进制转二进制:除了除二取余逆序排序外,还有一个方法是凑数,找到比该数小而近的2的幂,对应位为1,依次做差。
        如:50最近的为32,即2的5次方,先写100000第六位为1;50-32=18,最近为16,即2的四次方,则第五位填1为110000;18-16=2,对应2的一次方,第二位填1,即110010

    原码、反码、补码

    1. 原码:正数的原码为转换为二进制,并补齐位。负数的原码为按照绝对值转换为二进制后,最高为变成1。
      如:7的原码为00000000 00000000 00000000 00000111,-7的原码为10000000 00000000 00000000 00000111
    2. 反码:正数的反码和原码相同。负数的反码为原码除最高位外按位取反。
      如:7的反码为00000000 00000000 00000000 00000111,-7的反码为11111111 11111111 11111111 11111000
    3. 补码:正数的补码和原码相同。负数的补码为反码加1,即原码除最高位外按位取反加1。
      如:7的补码为00000000 00000000 00000000 00000111,-7的补码为11111111 11111111 11111111 11111001
    4. 数值在计算机中是以补码的方式存储的,原因在于,使用补码可以将符号位和数值域统一处理;同时,加法和减法也可以统一处理。此外,补码与原码相互转换,其位运算过程相同,不需要额外的硬件电路。
    5. 小结:正数的原码反码补码相同,都是十进制转换成二进制位。负数的原码求补码和补码求原码过程相同,都是除最高位后按位取反加1。

    位运算符

    为了节约内存开销和加快计算效率,可以使用位运算符。

    1. 按位与&:对应位都是1结果为1,否则为0
    2. 按位或 |:对应位都是0结果为0,否则为1
    3. 按位异或:对应位相同结果为0,否则为1
    4. 按位取反~:正数按位取反后加1,负数按位取反
    5. 有符号左移<<和右移>>:正数补0,负数补1。高位溢出直接舍弃
    6. 无符号左移<<<和右移>>>:无论正负,高位补0
    7. 左移巧用
      • 左移n位相当于该数乘以2的n次方,但是此结论只适用于该数左移时被溢出舍弃的高位中不包含1的情况。x*=2优化为x=x<<1
      • 计算a的第b个二进制位是什么,a&(1<<b)
  • 相关阅读:
    文件的初级功能
    Scanner的用法
    界面制作小例
    初学Java感想
    el-table合计栏未显示的问题
    推荐一些团队博客和个人博客地址
    大数加法
    汇编语言画圆
    Java一个简单的文件工具集
    css选择器
  • 原文地址:https://www.cnblogs.com/pycrab/p/8732389.html
Copyright © 2011-2022 走看看