1:进制转换

转换规则:
先把数据的每一位上的系数乘以对应基数的次幂(低位从零开始),然后相加即可

十进制到其他进制

规则:除基取余,直到商为0,最后将余数反转

十进制到二进制: 除2取余,直到商为0,最后将余数反转
    例: 十进制13对应的二进制数据是1101
    
    二进制到十进制的技巧(8421码)

十进制到八进制: 除8取余,直到商为0,最后将余数反转
    例: 十进制13对应的八进制数据是15

十进制--二进制--八进制
    A. 首先把十进制转成二进制
    B. 其次把二进制数据每三位组合。左边不够三位用0补位
    C. 然后把每个组合计算成对应的十进制数据
    D. 最后从左到右把数据相连接即可得到八进制

十进制到十六进制: 除16取余,直到商为0,最后将余数反转
    例:十进制13对应的把进制数据是D

十进制--二进制--十六进制
    A. 首先把十进制转成二进制
    B. 其次把二进制数据每四位组合。左边不够四位用0补位
    C. 然后把每个组合计算成对应的十进制数据
    D. 最后从左到右把数据相连接即可得到十六进制

快速转换法

如果你是搞网络的,我觉得你一定要记住以下几种二进制数的转换值。你是一个网络工程 师,当看到一串二进制数时,你不要告诉我你会拿出笔纸或掰手指算半天才知道它转化成十进制的数值。要想快,那就记下下面几种常见的二进制--十进制转换:

以8位 来演示:

1.第一种:

00000001      1

00000010      2

00000100      4

00001000      8

00010000      16

00100000      32

01000000      64

10000000      128

2.第二种:

00000001      1

00000011      3

00000111      7

00001111      15

00011111      31

00111111      63

01111111      127

3.第三种:

10000000     128

11000000     192

11100000     224

11110000     240

11111000     248

11111100     252

11111110     254

举个例子:  11101011

可分为:

11100000(上面第三种类型)   224

00001000(上面第一种类型)   8

00000011(上面第二种类型)   3

我们通过记住上面三种类型的转换,再用加 法(加法口算你会吧)立即得到结果:235

==================================================================================

方法二:

熟记以下排列,其实很Easy了,从右往 左,依次是前一个数的2倍:

256      128      64       32      16      8        4         2         1

随便写个数字比如48

48 = 32 + 16,所以在32 和 16所在的位置为1,其余为0,

转为2进制就是

256  128  64  32  16  8   4   2   1

0       0     0    1    1   0   0   0   0

二进制转十进制就更简单了,

比如随便写的一串 01111101

先写上 :  0         1           1         1         1         1          0          1

然后填充  128     64         32       16        8         4          2          1

十进制为 64+32+16+8+4+1=125

2. 计算机中有符号数据表示法

原码
反码
补码

3. 变量
在程序的运行过程中,其值在指定范围内变化的值
是内存中一个区域,用于存储数据
变量的定义格式:
    A:数据类型 变量名 = 初始化值;

变量在使用的时候
    A:第一种,在声明的时候,就初始化值
        数据类型 变量名 = 初始化值;
        举例:byte b = 100; System.out.println(b);

B:第二种 在使用前,赋值 声明
赋值
使用
举例:     byte b2;
    b2 = 100;
    System.out.println(b2);

4. 数据类型
java语言分为两种数据类型
A:基本数据类型
B:引用数据类型(类,接口,数组)

基本数据类型
A:区别 在内存中分配的空间大小不同,从而导致它表示的数据范围不同
B:4类8种
    ◾整数
    ◾byte 占1个字节//8个开关,8个二进制位 1byte = 8bit
    ◾short 占2个字节
    ◾int 占4个字节0
    ◾long 占8个字节 其后加L或l标识
    ◾浮点数
    ◾ float 占4个字节 其后加F或f标识3.3f 2^63
    ◾32个二进制位
    ◾1位符号位
    ◾8位代表指数位
    ◾23位尾数位0.9999999
    ◾0000000000 - 111111111 0 - 255
    ◾IEEE 754 0 255 特殊的值
    ◾1 - 254 - 127
    ◾1 - 127 = -126
    ◾254 - 127 = 127

◾double 占8个字节
    ◾ 字符
    ◾char 占2个字节 0 - 65535
    ◾ 布尔型
    ◾boolean This data type represents one bit of information,
    ◾but its "size" isn't something that's precisely defined.
    ◾这个数据类型代表一个比特的信息,但它的“大小”不是精确定义的东西.
    ◾true,false

C:默认情况下:
整数是int类型
浮点数是double类型

5. 数据类型转换

数据参与运算
A:整型,字符型,浮点型的数据在混合运算中相互转换,转换时遵循以下原则
    a.容量小的类型与容量大的类型进行计算,默认转换为容量大的数据类型;
    b.数据类型按容量大小排序为: byte,short,char->int->long->float->double
    c.byte 和 short运算时不能和char之间互相转换,byte可以直接赋值给short,但是他们三者在计算时首先会转换为int类型

◾容量大的数据类型转换为容量小的数据类型时,要加上强制转换符,但可能造成精度降低或溢出;使用时要格外注意。
◾有多种类型的数据混合运算时,系统首先自动的将所有数据转换成容量最大的那一种数据类型,然后再进行计算。

B:强制转换符
◾格式:(数据类型)(要被转换的数据) byte b = (byte)(300);

C:字符型参与运算
◾首先会去找对应字符的unicode码值。然后运算。
◾char 类型取值范围0~2(16)-1,我就有了一个问题?能不能把整数直接赋值给char类型的变量

D:布尔型参与运算
◾不能参与运算

E:字符串参与运算
◾它是和参与运算的数据相连接组成了一个新的字符串。

思考:哪句是编译失败的呢?为什么呢?

byte b1=3,b2=4,b;
b=b1+b2;
(1)byte,short,char三种数据类型在内存中运算的时候会自动类型提升为int去运算
(2)b1和b2是两个变量值,jvm无法判断里面值的大小

b=3+4;
java 编译器有常量优化机制,在编译的时候已经将3+4的结果赋值给b了

6:算术运算符+,-,*,/,%,++,--

A:%
当左边的绝对值小于右边:结果是左边
当左边的绝对值等于右边或者是右边倍数的时候:结果是0
当左边的绝对值大于右边:结果是余数,符号取决与左边的的符号
取余的正负号取决于左边,右边忽略不记
用途:任意正整数%2 结果是要么0,要么1。用于切换条件

B:++,--
递增,递减运算符。就是加1或者减1
单独存在,放在操作数的前面或者后面,结果一样
参与运算时:
◾放在变量的前面,先自身加或者减1,然后再参与运算
◾放在变量的后面,先参与运算,然后再自身加或者减1

•C:+
作为数据的符号(正号)
做加法运算
字符串连接符"5 + 5 =" + (5 + 5);

7:赋值运算符=,+=,*=
赋值运算符 ◦A:=:赋值运算符 把右边的值赋给左边

举例:int x = 3; 把3赋给int类型变量x
      int a,b,c;
      a = b = c = 5;
B:+=:加赋值运算符 把左边和右边的和赋给左边 ◦举例:int x = 3; x+=2;等同于 x = x + 2;
面试题

byte b = 5;
b = b + 2;//can't revert into byte;
b += 2;
b = (byte)(b + 2);
System.out.println(b);会不会报错?
+=运算符在给b赋值时,自动完成了强转操作。

8:比较运算符==,!=,>,<,>=,<=
比较运算符的结果都是boolean型,也就是要么是true,要么是false。

9:逻辑运算符

逻辑与运算符 &
第一个条件    第二个条件     结果
true          true           true
false         true           false
true          false          false
false         false          false

简单记:左右两边同时为true,结果为true。

逻辑或运算符 |
第一个条件    第二个条件     结果
true          true           true
false         true           true
true          false          true
false         false          false

简单记:左右两边只要有一个结果是true,结果为true。

逻辑异或运算符 ^
第一个条件    第二个条件     结果
true          true           false
false         true           true
true          false          true
false         false          false

简单记:左右两边相同,结果为false。

逻辑非运算符 !
!true  false
!false true
!!true true

短路与:
&:左边无论什么结果,右边都执行。
&&:左边为false,右边不执行,结果为false。

int x = 10;
x > 11 && x < 15

短路或:
|:左边无论什么结果,右边都执行。

||:左边为true,右边不执行,结果为true。

Java进制转换, 数据类型, 运算符的更多相关文章

  1. JAVA之旅(一)——基本常识,JAVA概念,开发工具,关键字/标识符,变量/常量,进制/进制转换,运算符,三元运算

    JAVA之旅(一)--基本常识,JAVA概念,开发工具,关键字/标识符,变量/常量,进制/进制转换,运算符,三元运算 Android老鸟重新学一遍JAVA是什么感觉?枯燥啊,乏味啊,而且归纳写博客,都 ...

  2. 进制转换&数据类型(1)

    一: 进制转换 在计算机中, 数据都是以0和1来表示的 进制: 进位制 十进制: 数字由0~9这10个数字来表示, 逢10进1位 0 1 2 3 4 5 6 7 8 9 10 二进制: 数字由0和1这 ...

  3. Java 进制转换(二进制(负),八进制,十进制,十六进制),位运算、逻辑运算(2)

    负数的二进制表现形式:其实就是该数的绝对值取反+1. 进制转换(二进制,八进制,十进制,十六进制),原理解析 十六进制的表现形式: (2)(与.异或.左移.右移.三元运算符)

  4. java进制转换(无视正负数的差别)

    最近看了一下学习资料,感觉进制转换其实还是挺有意思的,尤其是对于负数这一方面. 下面和大家分享一下,这里只写了十进制到二进制的转换,其实都是同样的道理 public class Test1 { pub ...

  5. 初学java进制转换方面补充学习

    进制转换: 基础: ​ 二进制用的数为:0/1 ​ 八进制用的数为:0/1/2/3/4/5/6/7 ​ 十进制用的数为:0/1/2/3/4/5/6/7/8/9 ​ 十六进制用的数为:0/1/2/3/4 ...

  6. Java进制转换示例

    收藏的代码,以备查询之用.进制之间转换都是以十进制作为中间层的. int os = 16; //十进制转成十六进制: Integer.toHexString(os); //十进制转成八进制 Integ ...

  7. java进制转换代码

    定义十进制的数直接写,定义8进制的数以0开头,定义二进制的数以0b开头,定义十六进制的数以0x开头需要将十进制的数以二进制的数表示出来可以参照下例: int a = 10; System.out.pr ...

  8. Java进制转换

    其他转10进制 System.out.println(Integer.parseInt("10", 2));// bin System.out.println(Integer.pa ...

  9. java 进制转换

    class Dec2XXX { public static void main(String[] args) { toBin(6); toHex(6); toOct(6); } /*10to2*/ p ...

随机推荐

  1. vue嵌套路由总结

    嵌套路由就是在一个被路由过来的页面下可以继续使用路由,嵌套也就是路由中的路由的意思. 比如在vue中,我们如果不使用嵌套路由,那么只有一个<router-view>,但是如果使用,那么在一 ...

  2. 解决EditPlus在设置了UTF-8之后,编写的HTML页面仍出现汉字乱码问题

    解决EditPlus在设置了UTF-8之后.编写的HTML页面仍出现汉字乱码问题   相信有些同学在使用EditPlus编写HTML页面时发现,尽管已经设置好了UTF-8的编码格式.但却发现HTML页 ...

  3. 转:[大数据竞赛]协同过滤在这个问题上是否work

    http://bbs.aliyun.com/read/154433.html?spm=5176.7189909.0.0.gzyohy&fpage=2 看到主办方之前发的一篇文章里提到,这个购买 ...

  4. Kafka:ZK+Kafka+Spark Streaming集群环境搭建(二十四)Structured Streaming:Encoder

    一般情况下我们在使用Dataset<Row>进行groupByKey时,你会发现这个方法最后一个参数需要一个encoder,那么这些encoder如何定义呢? 一般数据类型 static ...

  5. Kafka:ZK+Kafka+Spark Streaming集群环境搭建(十五)Spark编写UDF、UDAF、Agg函数

    Spark Sql提供了丰富的内置函数让开发者来使用,但实际开发业务场景可能很复杂,内置函数不能够满足业务需求,因此spark sql提供了可扩展的内置函数. UDF:是普通函数,输入一个或多个参数, ...

  6. Python 编码风格指南

    原文:http://python.jobbole.com/84618/ 本文超出 PEP8 的范畴以涵盖我认为优秀的 Python 风格.本文虽然坚持己见,却不偏执.不仅仅涉及语法.模块布局等问题,同 ...

  7. C#.NET常见问题(FAQ)-控制台程序如何做弹窗

    最简单的弹窗,只要引用System.Windows.Forms,就可以使用WinForm的弹窗   如果要弹出是/否的选择对话框,则可以拷贝下面的代码 DialogResult dr = Messag ...

  8. centos7.2安装社区版docker-ce-17.06.1

    先yum install安装如下包: container-selinux-2.21-1.el7.noarch libcgroup-0.41-13.el7.x86_64 libtool-ltdl-2.4 ...

  9. MAC快捷方式记录

    刚刚转到MAC,很多功能发现不能用,总结一下: 刷新页面:command+r 命令行,到行首:control+a 命令行,到行尾:control+e vim,到行尾:shift+$ vim,到行首:s ...

  10. Kafka部署与代码实例(转)

    来自:http://doc.okbase.net/QING____/archive/19447.html 也可参考: http://blog.csdn.net/21aspnet/article/det ...