Java基础(二):原码、反码、补码及进制之间的运算

news2024/11/23 11:59:05

Java基础系列文章

Java基础(一):语言概述

Java基础(二):原码、反码、补码及进制之间的运算

Java基础(三):数据类型与进制


目录

  • 一、不同进制的表示方式
  • 二、二进制
  • 三、进制之间的转换
  • 四、byte的取值范围


一、不同进制的表示方式

  • 所有数字在计算机底层都以二进制形式存在
  • 对于整数,有四种表示方式
    • 二进制(binary):0,1 ,满2进1,以0b0B开头
    • 十进制(decimal):0-9 ,满10进1
    • 八进制(octal):0-7 ,满8进1,以数字0开头表示
    • 十六进制(hex):0-9及A-F,满16进1,以0x0X开头表示。此处的A-F不区分大小写。如:0x21AF +1= 0X21B0

在这里插入图片描述
在这里插入图片描述

二、二进制

  • Java整数常量默认是int类型,当用二进制定义整数时,其第32位是符号位;当是long类型时,二进制默认占64位,第64位是符号位
  • 二进制的整数有如下三种形式
    • 原码:直接将一个数值换成二进制数。最高位是符号位
    • 负数的反码:是对原码按位取反,只是最高位(符号位)确定为1
    • 负数的补码:其反码加1。计算机以二进制补码的形式保存所有的整数
    • 正数的原码、反码、补码都相同,负数的补码是其反码+1

为什么要使用原码、反码、补码表示形式呢?

  • 计算机底层都是使用补码进行存储和计算(正数不变,负数补码是其反码+1)
  • 主要要解决的问题就是负数的表示
    1. 假设我们有正数0000 1111,我们如何表示其相反数呢?
    2. 一般我们的思路是,找一个数,跟它相加的结果等于0,但是我们发现,要找出一个与它相加后结果等于0的数还是要略加思考一下的(因为要计算进位)
    3. 所以,为何不找出一个与它相加后结果是1111 1111的数,然后该数+1即是我们所要的答案啦
    4. 于是,很容易的,0000 1111 + 1111 0000 + 1 = 1111 1111 1111 1111 + 1 = (1)0000 0000 (超过最高位数的1舍去)
    5. 一目了然,1111 0001 就是我们想要的答案了
    6. 那么我们是怎么得到这个相反数的呢?
      • 首先,找出一个数与它加起来结果是全1的,这个数便是它的反码
      • 然后这个数再加1,这便是它的相反数了,也是我们说的补码
      • 我们检验一下0的情况,0000 + 1111 + 1 =(1)0000,其中1111 + 1 = (1)0000 = 0000,即+0和-0的二进制表示均为0000

三、进制之间的转换

二进制 转 十进制

在这里插入图片描述

十进制 转 二进制

在这里插入图片描述

二进制与八进制转换

在这里插入图片描述

四、byte的取值范围

  • byte 在计算机中是8位;第一位为符号位。0表示正数,1表示为负数,其余的7位表示具体的值
  • 数值在计算机内存中的存储是补码的方式
  • 正数最大为0111 1111,十进制表示形式为127
  • -0的原码是1000 0000,反码是 1111 1111,补码是 10000 0000 ,因为byte只识别8位字节,所以补码是 0000 0000
  • +0的原码是 0000 0000 ,反码补码都是其本身,还是0000 0000
  • 对于0来说,底层存储补码,就只有0000 0000,把-0和+0都包括了
原码 -1 是  1000 0001 ,   -127是 1111 1111

反码    是  1111 1110 ,       是 1000 0000

补码    是  1111 1111 ,       是 1000 0001
    
即补码 1111 1111 到补码 1000 0001 表示 -1 到 -127   
  • 负数的补码还有一个空缺,1000 0000,这个就作为了-128的补码
    • -128 + 1 = -127也就是 1000 0000 + 0000 0001 = 1000 0001,运算起来也合理
  • -128只有补码,没有原码和反码(因为推算回去原码是0000 0000)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/404230.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Leetcode 141.环形链表 142环形链表II

141环形链表 文章目录快慢指针快慢指针 代码思路: slow 和fast 指向 head slow走一步,fast走两步 没有环: fast每次走2步 ,如果 fast 最终遇到NULL(链表中的元素是 偶数)或者fast->next(链表中的元素是 奇数)遇到NULL&#xf…

【ArcGIS Pro二次开发】(12):txt文件和Excel文件的读写

在Arcgis Pro的工作流中,数据的输入是很常见的。这里以TXT和Excel两种文件为例,在SDK中实现数据的读取和写入。 一、txt文件的读写 txt文件的读写相对简单,可以用Arcgis Pro自带的OpenItemDialog打开txt文件,并直接读取&#xff…

浙江大学海宁IMBA提面经验分享

先来介绍一下我的个人情况:本人毕业于浙江一所普通的本科院校,毕业已经6年了,在一家互联网公司担任市场部经理。其实在参加浙大IMBA项目提面之前,我也参加了浙大MBA项目的提面,可惜只拿到了良好的结果,所以…

力扣-每天的领导和合伙人

大家好,我是空空star,本篇带大家了解一道简单的力扣sql练习题。 文章目录前言一、题目:1693. 每天的领导和合伙人二、解题1.正确示范①提交SQL运行结果2.正确示范②提交SQL运行结果3.正确示范③提交SQL运行结果4.正确示范④提交SQL运行结果5.…

SWMM从入门到实践教程 04 快速入门案例的模拟执行

文章目录1 模拟时间的设置2 模拟执行3 报告查看3.1 完整报告3.2 总结报告4 纵断面查看5 结果播放1 模拟时间的设置 在左侧双击Options中的Dates,即可弹出时间的设置。此处为了教学,建议仅模拟6个小时,加快结果的生成。实际项目中,…

Gradle 的下载安装教程

Gradle 8.0.1 下载安装教程笔者的环境: Java 17.0.1 Gradle 8.0.1 Windows 10 教育版 64位 在继续阅读本教程之前,需要先完成 JDK 的安装。JDK 需要选择 8 及以上的版本。关于 JDK 的安装,可见笔者的另一篇博客: Java 的下载安…

卷积神经网络之AlexNet

目录概述AlexNet特点激活函数sigmoid激活函数ReLu激活函数数据增强层叠池化局部相应归一化DropoutAlexnet网络结构网络结构分析AlexNet各层参数及其数量模型框架形状结构关于数据集训练学习keras代码示例概述 由于受到计算机性能的影响,虽然LeNet在图像分类中取得了…

【轻轻松松学MongoDB】操作命令02:插入/删除

文档&#xff08;document&#xff09;的数据结构和 JSON 基本一样。所有存储在集合中的数据都是 BSON 格式。 一、文档插入 db.collection.insert( <document or array of documents>, { writeConcern: <document>, ordered: <boolean> } ) 例子&#xff…

【编程基础】009.输入两个正整数m和n,求其最大公约数和最小公倍数。

最大公约数与最小公倍数 题目描述 输入两个正整数m和n&#xff0c;求其最大公约数和最小公倍数。 输入格式 两个整数 输出格式 最大公约数&#xff0c;最小公倍数 样例输入 5 7 样例输出 1 35 题目思路 在这里我们用m表示较大的那个数&#xff0c;n表示较小的数。求…

三分钟拥有自己的 chat-gpt (开发到上线)

三分钟拥有自己的 chat-gpt (开发到上线) 首先你需要有一个 laf 账号&#xff0c;如果你还不知道 laf 是什么&#xff0c;点击这里三分钟学会然后你还需要有一个 chat-gpt 的账号并且生成一个 apiKey (这一步可以问 Google ) 云函数 具备了上面这两个条件我们就可以开始啦。…

CNCF x Alibaba云原生技术公开课 第八章 应用配置管理

Pod配置管理分类 可变配置就用 ConfigMap&#xff1b;敏感信息是用 Secret&#xff1b;身份认证是用 ServiceAccount&#xff1b;资源配置是用 Resources&#xff1b;安全管控是用 SecurityContext&#xff1b;前置校验是用 InitContainers。 1、ConfigMap 概念&#xff1a;…

Java高级技术:单元测试、反射、注解

目录 单元测试 单元测试概述 单元测试快速入门 单元测试常用注解 反射 反射概述 反射获取类对象 反射获取构造器对象 反射获取成员变量对象 反射获取方法对象 反射的作用-绕过编译阶段为集合添加数据 反射的作用-通用框架的底层原理 注解 注解概述 自定义注解 …

堆的结构与实现

堆的结构与实现二叉树的顺序结构堆的概念及结构堆的实现堆的创建向上调整建堆向下调整建堆堆的操作链接二叉树的顺序结构 堆其实是具有一定规则限制的完全二叉树。 普通的二叉树是不太适合用数组来存储的&#xff0c;因为可能会存在大量的空间浪费。而完全二叉树会更适合使用顺…

C++语法规则3(C++面向对象)

多态 C多态意味着调用成员函数时&#xff0c;会根据调用函数的对象的类型来执行不同的函数&#xff1b; 形成多态必须具备三个条件&#xff1a; 必须存在继承关系&#xff1b;继承关系必须有同名虚函数&#xff08;其中虚函数是在基类中使用关键字 virtual 声明的函数&#…

网络编程、通信

目录 网络通信三要素 三要素概述、要素一&#xff1a;IP地址 IP地址操作类-InetAddress 要素二&#xff1a;端口号 要素三&#xff1a;协议 UDP通信 UDP通信&#xff1a;快速入门 UDP通信&#xff1a;多发多收 UDP通信-广播、组播 TCP通信-快速入门 编写客户端代码 …

图文详解红黑树,还有谁不会?

前言在MySQL中&#xff0c;无论是Innodb还是MyIsam&#xff0c;都使用了B树作索引结构(这里不考虑hash等其他索引)。本文将从最普通的二叉查找树开始&#xff0c;逐步说明各种树解决的问题以及面临的新问题&#xff0c;从而说明MySQL为什么选择B树作为索引结构。目录一、二叉查…

深度学习 Day26——使用Pytorch实现猴痘病识别

深度学习 Day26——使用Pytorch实现猴痘病识别 文章目录深度学习 Day26——使用Pytorch实现猴痘病识别一、前言二、我的环境三、前期工作1、设置GPU导入依赖项2、导入猴痘病数据集3、划分数据集四、构建CNN网络五、训练模型1、设置超参数2、编写训练函数3、编写测试函数4、正式…

2023年江苏省职业院校技能大赛中职网络安全赛项试卷-教师组任务书

2023年江苏省职业院校技能大赛中职网络安全赛项试卷-教师组任务书 一、竞赛时间 9:00-12:00&#xff0c;12:00-15:00&#xff0c;15:00-17:00共计8小时。 二、竞赛阶段 竞赛阶段 任务阶段 竞赛任务 竞赛时间 分值 第一阶段 基础设施设置与安全加固、网络安全事件响应、数…

REDIS16_LRU算法概述、查看默认内存、默认是如何删除数据、缓存淘汰策略

文章目录①. LRU算法概述②. 查看默认内存③. 如何删除数据④. 缓存淘汰策略①. LRU算法概述 ①. LRU是Least Recently Used的缩写,即最近最少使用,是一种常用的页面置换算法,选择最近最久未使用的数据给予淘汰 (leetcode-cn.com/problems/lru-cache) ②. LRU算法题来源 ③.…

8大主流编程语言的适用领域,你可能选错了语言

很多人学编程经常是脑子一热然后就去网上一搜资源就开始学习了&#xff0c;但学到了后面发现目前所学的东西并不是自己最喜欢的&#xff0c;好像自己更喜欢另一个技术&#xff0c;感觉自己学错了&#xff0c;于是乎又去学习别的东西。 结果竹篮打水一场空&#xff0c;前面所付…