java 二进制变量_java变量、二进制、数据类型、原码、补码、反码

2023-11-15

1. 变量

1. 他 她 我 你 某人 佚名 旺财 X-man x = 1

您好! 它

(变量就是自然语言中的代词)

2. int age = 15;// 00000000 00000000 00000000 00001111

3. Java 中的变量

a Java是强类型语言,

b 变量必须声明,并且初始化以后使用

c 变量必须有明确的类型

d 变量不能重复定义

4. 变量的作用域

a 在声明的地方开始,到块结束为止

b 离开变量的作用域结束,变量将回收。

2. 二进制

1. 计算机内部只有二进制数据!

int i = 15; char c = 'A';

'A'-> 00000000 01000001

15 -> 00000000 00000000 00000000 00001111

115 = 1*100 + 1*10 + 5*1

= 1×10^2 + 1×10^1 + 5×10^0

基数: 10

权: 基数^n

基数:2

权:  128 64 32 16 8 4 2 1

2. 二进制: 1111= 1*2^3+1*2^2+ 1*2^1 + 1*2^0

= 1*8 + 1*4 + 1*2 + 1*1

= 15(10)

8421

1001 = 9

01000001 = 1*64 + 1*1

= 65(10)

128 64 32 16 8 4 2 1

1   1   0   0  0 0 0 0 = 192(10)

3. 十进制:  65 = 6*10 + 5*1

= 6*10^1 + 5*10^0

256 128 64 32 16 8 4 2 1

95(10)=   0  1   0  1 1 1 1 1 (2)

int age = 15;

age = 00000000 00000000 00000000 00001111

int age = 0xf;

4. 16进制

0 1 2 3 4 5 6 7 8 9 a  b   c   d   e   f

10 11 12 13 14 15

41(16) = 4 * 16 +1 = 65(10)

4    1

0100 0001(2) = 65(10)

* 将16进制作为2进制的简写形式.

4e2d(16)=0100 1110 0010 1101(2)

5. 八进制是二进制的简写,3位对应转换

3.原码、补码、反码

1、原码:一个正数,按照绝对值大小转换成的二进制数;一个负数按照绝对值大小转换成的二进制数,然后最高位补1,称为原码。

比如 00000000 00000000 00000000 00000101 是 5的 原码。

10000000 00000000 00000000 00000101 是 -5的 原码。

备注:

比如byte类型,用2^8来表示无符号整数的话,是0 - 255了;

如果有符号, 最高位表示符号,0为正,1为负,那么,正常的理解就是 -127 至 +127 了.这就是原码了,

值得一提的是,原码的弱点,有2个0,即+0和-0(10000000和00000000);

还有就是,进行异号相加或同号相减时,比较笨蛋,先要判断2个数的绝对值大小,然后进行加减操作,最后运算结果的符号还要与大的符号相同;

于是,反码产生了。

2、    反码:正数的反码与原码相同,负数的反码为对该数的原码除符号位外各位取反[每一位取反(除符号位)]。

取反操作指:原为1,得0;原为0,得1。(1变0; 0变1)

比如:正数00000000 00000000 00000000 00000101  的反码还是 00000000 00000000 00000000 00000101

负数10000000 00000000 00000000 00000101  的反码则是 11111111 11111111 11111111 11111010。

反码是相互的,所以也可称:10000000 00000000 00000000 00000101 和 11111111 11111111 11111111 11111010互为反码。

备注:还是有+0和-0,没过多久,反码就成为了过滤产物,也就是,后来补码出现了。

3、 补码:正数的补码与原码相同,负数的补码为对该数的原码除符号位外各位取反,然后在最后一位加1.

比如:10000000 00000000 00000000 00000101 的反码是:11111111 11111111 11111111 11111010。

那么,补码为:

11111111 11111111 11111111 11111010 + 1 = 11111111 11111111 11111111 11111011

备注:1、从补码求原码的方法跟原码求补码是一样的 ,也可以通过完全逆运算来做,先减一,再取反。

2、补码却规定0没有正负之分

所以,-5 在计算机中表达为:11111111 11111111 11111111 11111011。转换为十六进制:0xFFFFFFFB。

举例:

a. -2*2 = -4

-2  1110

X  2  0010

---------------

0000

1110

0000

+   0000

----------------

-4   1100

b. -2 + 3 = 1

-2  1110

+   3  0011

111

-----------------

1 0001

c. -1+-1 = ?

-1   1111

-1   1111

+        1111

-------------------

-2   1110

d. 7+1 = ?

7   0111

+   1   0001

-----------------

-8   1000

e.~3 + 1 = ?

3   0011

~3   1100

+1   0001

------------

-3   1101

-3   1101

~-3  0010

+1   0001

-------------

3   0011

强调:补码运算时负号只与第一位数相连,然后再与后面的数进行运算,如上例-1+-1(1110为-2的补码),~3 + 1(1101为-3的补码)

总结:

正数的反码和补码都与原码相同。

负数的反码为对该数的原码除符号位外各位取反。

负数的补码为对该数的原码除符号位外各位取反,然后在最后一位加1

源码:优点在于换算简单 缺点在于两个零 加减法需要独立运算

反码:有点在于表示清晰 缺点在于两个零 加减法同样需要独立运算

补码:优点在于一个零 范围大  减法可以转为加法 缺点在于理解困难

4.Java的数据类型

1. Java数据分为基本类型和引用类型. Person someone

2. 基本类型分为八种:

byte short int long float double char boolean

(a) 整数类型 byte short int long

整数都是有符号整数

byte   8bit  -128 ~ +127

short 16bit  -32768 ~ 32767

int   32bit  -2G ~ 2G-1  -2^31 ~ 2^31-1

long  64bit  -2^63 ~ 2^63-1

int a = 5;

建议使用int, 很少使用short,使用int要注意取值范围, int 的值不大!

直接量-字面量: 直接给出的常量值如: 1

a. 整数的直接量的类型默认是int类型

b. 以L,l为结尾的字面量是long类型

1024

1024L

c. 可以使用整数直接量给byte,short类型赋值,但是不要超过byte和short的范围.

(b) 浮点数: 就是小数, float, double

34642323.44 = 3.464232344 * 10^7

尾数              指数

10001000.(2)

1.0001000 * 2^111(2)

尾数            指数

float 32位

0     00000111 10001000000000000000000

符号位 指数       尾数

int a = 0x7fffffff;

float f = a;

double

1 符号位

11 指数

52 尾数

a. double 是64位, float 32位

double比float精确

b. 默认的浮点数字面量是: double类型的

字面量后缀: d/D f/F

double d = 1d;//1.0

1 1L 1D 1F

c. 只使用double计算浮点数,float类型基本不用!

浮点数不能精确运算

int:10001000 -> float:1.0001000*2^111

0 00000111 10001000 00000000 0000000

(c) 字符类型:char, 字符类型是一个16位无符号整数!

a. 字符类型的值是对应字符的编码, 是unicode编码. Java支持国际化.

英文部分的值与ascII编码一致.

char是定长编码, 所有的字符都是16位.

'A' -> 0x0041

'中'-> 0x4e2d

在编码中: '0'~'9' , 'a'~'z', 'A'~'Z'都是连续编码的!

'0'=='\u0000'  '\u0000'==0

b. 最小值:0, 最大值:65535 = 2^16-1

c. 字符字面量使用单引号为定界符号:'中'

字面量也是整数常量!

特殊字符采用转义字符表示:

如: '\n' '\t' '\\' '\b' '\r'

'\'' '\"'  '\u4e2d'

char c = '\\';

(d)布尔类型: boolean

字面量: true false

float f = (float)2.6D;

char c = 65;

5.数据类型转换:

1. 自动类型转换(隐式类型转换)

从小类型到大类型, 自动完成

如: int n = 'A';

long l = 'A';

char-------->int------>long------->float------>double

byte------->short------->int------>long------->float------>double

2. 强制类型转换, 从大类型到小类型需要强制转换

强制类型转换有风险, 会造成精度损失或者溢出

char

byte

long l = 1024L*1024*1024*4;//0x100000000

int i = (int)l;//0

double pi = 3.1415926535897932384626;

float f = (float)pi;

若有不完善的地方请大家多提意见,转发时请注明出处!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java 二进制变量_java变量、二进制、数据类型、原码、补码、反码 的相关文章

  • 第四部分、JEECG-BOOT 微服部署文档

    文章目录 第四部分 微服部署文档 微服务部署 一 制作各个服务JAR包 二 配置host 三 初始化Mysql数据库 四 启动微服务各个组件 五 前端部署 六 其他软件安装 第四部分 微服部署文档 微服务部署 后端服务通过JAR方式运行 支
  • JAVA中的比较器

    引出 传统的对象之间是一般都是 或者 看对象是否为同一个 而没有存在 gt 或者 lt 类似的 但有的时候我们需要根据 对象的某一个属性进行排序 怎么办呢 这个时候就引出来 比较器了 主要是两个接口 Comparable和Comparato
  • python 获取指定文件夹里面的图片文件的信息

    import time import exifread import os 切换到图片文件夹 由于我的这个文件夹里全部是图片文件所以无需判断直接遍历 os chdir news aa 遍历所有图片文件 for x y z in os wal
  • 简单的动态规划——装箱问题

    装箱问题 告诉你箱子的容积为多少 告诉你有N件物品和每一件物品的体积 问如何选择物品才能令箱子的剩余容积最小 搜索递归 include
  • spring动态修改bean

    spring动态修改bean RequestMapping ok public Object test2 ApplicationContext applicationContext SpringContextUtil getApplicat
  • android canvas 转bitmap_Android 雪花飘落动画效果 自定义View

    在码农的世界里 优美的应用体验 来源于程序员对细节的处理以及自我要求的境界 年轻人也是忙忙碌碌的码农中一员 每天 每周 都会留下一些脚印 就是这些创作的内容 有一种执着 就是不知为什么 如果你迷茫 不妨来瞅瞅码农的轨迹 本文章实现的效果如下
  • SpringBoot常用定时器库整合(Java Timer、线程池、Quartz、Task)

    简介 定时器可用于做数据统计 年度报表 定时刷新token等 本章主要描述以下常用定时器库的用法 1 Java Timer 2 Java 线程池 3 Quartz 4 Spring Task Java Timer定时器用法 在java中自带
  • 测度与积分 Measures and Integration学习笔记

    学习笔记1 可测空间 可测空间 Measurable Spaces sigma algebra 希望能坚持学习下去 可测空间 Measurable Spaces
  • delphi测试服务器响应时间,TIdHttp.Post响应时间太长

    我正在使用Delphi XE6 我已阅读以下所有内容 我知道相关时间和性能因素包括 1 HTTPOptions 2 TIdHttp Request选项 内容类型 编码 尤其是连接超时设置 3 iCsslIOHandler SSLOption
  • 多层感知器介绍

    一 概览 现实世界中很多真实的问题都不是线性可分的 即无法使用一条直线 平面或者超平面分割不同的类别 其中典型的例子是异或问题 Exclusive OR XOR 即假设输入为x1和x2 如果它们相同 即当x1 0 x2 0或x1 1 x2
  • Oracle19c数据库服务

    本节整理了Oracle在Windows下运行所安装的服务 桌面点击 我的电脑 管理 服务和应用程序 服务 进入下图界面 然后找到以Ora字段开头的服务就是Oracle的服务 如下图 1 OracleJobSchedulerORCL 描述 O
  • centos7下 k8s的安装 2023年8月6日

    一 基本信息介绍 kubernetes 1 27 4 系统 centos7 etcd 3 5 7 containerd 1 6 20 runc 1 1 5 建议内核升级到5 10 本次安装就只有一个master和两个个node节点 192
  • 空间配置器

    空间配置器 一 空间配置器概述 STL的操作对象都放在容器内 而容器需要一定的配置空间来存放数据资料 而空间配置器就负责给容器分配空间 SGI STL分配的空间是内存 其实基本都是内存吧 二 空间配置器的标准接口 1 必要接口 根据容器的需
  • centos解决mysql-bin.000*占用超大空间的问题

    本站 也就是安全者 网站数据库挂了一下午 也没时间处理 晚上回来后尝试restart mysql 发现一直提示shutting down 关闭不了 也stop不了 服务器重启也不行 可以确信肯定是mysql出问题了 进入mysql的data
  • HTTPS的加密过程

    HTTPS HTTPS即加密的HTTP HTTPS并不是一个新协议 而是HTTP SSL TLS 原本HTTP先和TCP 假定传输层是TCP协议 直接通信 而加了SSL后 就变成HTTP先和SSL通信 再由SSL和TCP通信 相当于SSL被
  • 【数据结构与算法——TypeScript】数组、栈、队列、链表

    数据结构与算法 TypeScript 算法 Algorithm 的认识 解决问题的过程中 不仅仅 数据的存储方式会影响效率 算法的优劣也会影响效率 什么是算法 定义 一个有限指令集 每条指令的描述不依赖于言语 编写指令 java c ts
  • (十八)Mybatis的XML文件中不允许出现“>“

    mybatis XML文件中不允许出现 gt lt 之类的符号 需要转义 是可以正常 关于elasticsearch中 gt gte lt lte缩写的含义
  • 反序列化漏洞原理/防御

    序列化就是将对象转换成字节流 可以更方便的将数据保存到本地文件 反序列化就是将字节流还原成对象 Java中提供了两个接口来支持序列化 ObjectIutputStream 和ObjectOutputStream 序列化相对安全 问题出在反序
  • html烟花特效,发射粒子特效,爱心特效,动态祝福、节日祝福网页,时间罗盘,黑客帝国代码雨、文字闪烁、表白爱心网页等等(附下载链接)

    粒子炫酷特效网页 html css js 大家都觉得程序员的工作很枯燥乏味 今天我就带大家看看程序员开发的那些漂亮的网页效果 点我下载源码 1 烟花特效 粒子特效 节日祝福 表白爱心网页 动态泡泡网页 动态蝴蝶网页 七叶草动态飘落网页 时间

随机推荐

  • Linux学习-Linux系统及编程基础笔记

    useradd zhangsan passwd zhangsan visudo往 etc sudoers文件中添加zhangsan visudo 找到如下的行 root ALL ALL ALL 往该行下面添加zhangsan zhangsa
  • 深度学习与机器学习的思考

    需要一些传统图像处理知识为佳 end to end 端到端 说的是 输入的是原始数据 始端 然后输出的直接就是最终目标 末端 中间过程不可知 因此也难以知 就此 有人批评深度学习就是一个黑箱 Black Box 系统 其性能很好 却不知道为
  • PostgreSQL 计算逾期率

    描述 计算下ylhx4 cxh xinyanfeature表 小鲨中部分用新颜的数据 中的1999个用户 首次借款第一期 第二期的d0和d15的逾期率 还款信息在transformdata xsfinrak表 小鲨用户 中 psperdno
  • 中点分割裁剪算法

    中点分割裁剪算法 python 实验目的 采用中点分割方法找到距离线段顶点最近的可见点 找到后 进行绘制 即可实现直线段在裁剪窗口的裁剪显示 算法思想 设要裁剪的线段是P1P2 中点分割算法可分成两个平行的过程进行 即从P1点出发找出离P1
  • Git基础操作:本地分支和远程分支改名

    相信聪明的你 直接看代码就能看懂 本地分支改名 git branch m feature add header2 feature add header 删除远程分支 git push origin feature add header2 本
  • FlashAttention

    一 论文题目 发表处 时间 FlashAttention Fast and Memory Efficient Exact Attention with IO Awareness 二 主要方向 新型注意力机制 三 细化任务 一种具有 IO 感
  • 2022深圳杯C题思路解析

    题目描述 继续更新 再更问题三 继续更新第一问 第四问 1 2 问题重述 在制定电动车调度方案时 必须考虑充 换电池的时间成本 从而提出了新 的车辆运输选址及调度问题 1 已知自动驾驶电动物料车在取料点 P 和卸货点 D 之间往复运送物料
  • Qt 对象树

    作者 billy 版权声明 著作权归作者所有 商业转载请联系作者获得授权 非商业转载请注明出处 Object Tree Model 先来看一下 QObject 的构造函数 通过帮助文档我们可以看到 QObject 的构造函数中会传入一个 P
  • Linux ./configure --prefix 命令是什么意思?

    Linux configure prefix 命令是什么意思 源码的安装一般由3个步骤组成 配置 configure 编译 make 安装 makeinstall Configure是一个可执行脚本 它有很多选项 在待安装的源码路径下使用命
  • D - Meeting Bahosain Gym - 102263D

    Essa wanted to meet the most powerful number theorist of all time Bahosain but Bahosain does not waste his precious time
  • 凸优化学习(四)——凸优化问题

    注意 本文内容来自于吴恩达老师cs229课堂笔记的中文翻译项目 https github com Kivy CN Stanford CS 229 CN 中的凸优化部分的内容进行翻译学习 4 凸优化问题 利用凸函数和集合的定义 我们现在可以考
  • CSS——快速入门

    CSS的优势 1 内容和表现分离 2 网页结构表现统一 3 样式十分的丰富 4 建议使用独立于HTML的CSS文件 5 利用SEO 容易被搜索引擎收录 style
  • oracle 重复列只显示一次的实现

    CREATE TABLE test ob id VARCHAR 32 ob name VARCHAR 32 INSERT INTO test VALUES A001 A001 a INSERT INTO test VALUES A001 A
  • Golang 变量作用域陷阱 误用短声明导致变量覆盖

    var remember bool false if something remember true 错误 使用remember 在此代码段中 remember 变量永远不会在 if 语句外面变成 true 如果 something 为 t
  • SpringMVC单元测试之MockMVC,模拟登录

    在一些实际开发中 很多情况下需要对数据库进行操作 但是这里的操作就设计到用户权限 所谓权限验证就是拿到用户客户端登录后的token 在代码中进行校验 一般都是在controller层首先进行校验 如果校验成功 则执行之后操作 否则 采取相应
  • Java语言基础

    01 01 计算机基础知识 计算机概述 了解 A 什么是计算机 计算机在生活中的应用举例 计算机 Computer 全称 电子计算机 俗称电脑 是一种能够按照程序运行 自动 高速处理海量数据的现代化智能电子设备 由硬件和软件所组成 没有安装
  • Dart基础语言 — 函数 Function

    Dart基础语言 函数 Function 函数定义 int add int x return x 1 调用 add 1 可选参数 int add int x int y int z if y null y 1 if z null z 1 r
  • [!] Unable to determine Swift version for the following pods:

    问题 Unable to determine Swift version for the following pods contact the author or set the SWIFT VERSION attribute pod in
  • Java基础 - XML解析转成Bean以及Bean转成XML(附带案例)

    文章目录 1 JAXB Java Architecturefor XML Binding 面向XML绑定的Java体系结构 1 1 注解 1 2 使用 测试1 反序列化xml文件成JavaBean对象 测试2 序列化普通JavaBean对象
  • java 二进制变量_java变量、二进制、数据类型、原码、补码、反码

    1 变量 1 他 她 我 你 某人 佚名 旺财 X man x 1 您好 它 变量就是自然语言中的代词 2 int age 15 00000000 00000000 00000000 00001111 3 Java 中的变量 a Java是