Java中正负数二进制表示
在Java/C++中正数和负数的存储方式
正数是以正码的形式存储
负数是以补码的形式存储
正码(正数使用)
正码就是一个数的真实值
假设有一个 int (32位)类型的数,值为5,那么,我们知道它在计算机中表示为:
00000000 00000000 00000000 00000101
5转换成二制是101,不过int类型的数占用4字节(32位),所以前面填了一堆0。
反码(正码取反)
5的二进制表示为 00000000 00000000 00000000 00000101 ,取反得
00000000 00000000 00000000 00000101 5
----------------------------------- ~5
11111111 11111111 11111111 11111010
补码(反码加1)
前面说到,5的反码为 11111111 11111111 11111111 11111010
11111111 11111111 11111111 11111010 ~500000000 00000000 00000000 00000001 1----------------------------------- +11111111 11111111 11111111 11111011 补码
在计算机里面,负数才使用补码的形式存储,那么我们举个例子 -1
先取1的正码(重点,是1的正码):
00000000 00000000 00000000 00000001
-1的反码:
11111111 11111111 11111111 11111110
-1的补码(反码加1):
11111111 11111111 11111111 11111111
可见,-1在计算机里用二进制表达就是全1。16进制为:0xFFFFFFFF
为什么计算机负数要以补码的形式存储
在硬件底层,只有加法器,没有减法器,为什么呢?因为减法在计算机底层也是加法运算,原因就在于补码可以直接运算。
11111111 11111111 11111111 11111111 -1
+ 11111111 11111111 11111111 11111011 -5
---------------------------------------11111111 11111111 11111111 11111010 -6的补码表示11111111 11111111 11111111 11111111 -1
+ 00000000 00000000 00000000 00000101 5
---------------------------------------00000000 00000000 00000000 00000100 4的正码表示
Java中正负数二进制表示相关推荐
- java负数用什么类型定义_(转) Java中的负数及基本类型的转型详解
(转) https://my.oschina.net/joymufeng/blog/139952 面这行代码的输出是什么? 下面两行代码的输出相同吗? 请尝试在Eclipse中运行上面的两个代码片段, ...
- 为什么对Java中的负数取绝对值结果不一定是正数?
Java中对负数取绝对值结果不一定是正数的情况非常罕见,仅仅发生在int和long类型的最小负数上.这是因为在Java中,有符号整数使用补码(two's complement)表示法,导致某些情况下, ...
- java中正斜杠与反斜杠
java中正斜杠与反斜杠 1.Java String类的replaceAll() 1.1 java 把反斜杠(\)替换成双斜杠(\\) 1.2 java 把反斜杠(\)替换成斜杠(/) 1.3 jav ...
- 二进制中正负数表示和判断
二进制中第一位0代表正:1代表负我知道,但是给你一个二进制的数比如101 那么转化成十进制应该是多少? 5? 但不是说首位为1应该是负的吗??? 谁能给我讲讲这个首位什么时候作为符号,什么时候作为数 ...
- 关于JAVA中十进制转换二进制的小程序
对于java中求二进制是将一个数分开成整数部分和小数部分,整数部分的按照除以2直到是0为止:小数部分是按照乘以2取整到0为止,对于特殊的小数就循环15次为止, 以下是代码: //十进制小数和整数的二进 ...
- 正负数二进制表示,正负数二进制移位运算、二进制源码、反码、补码
源码 原码就是符号位加上真值的绝对值, 即用第一位表示符号, 其余位表示值. [+1] 的原码 = 0000 0001 [-1] 的原码 = 1000 0001 第一位是符号位. 因为第一位是符号位, ...
- FPGA中正负数和定点小数的表示方法
在日常生活中,我们常常需要到正数与负数,比如南北两级气温常年为零度以下,这个时候我们就需要负数来表示温度.那么在FPGA工程里面也是这样,我们如果想要做温度监测工程,自然而然的就会需要到负数来表达零下 ...
- java中十进制转二进制转换函数
十进制转成十六进制: Integer.toHexString(int i) 十进制转成八进制 Integer.toOctalString(int i) 十进制转成二进制 Integer.to ...
- c 语言 正负数二进制表现_语言,表现力和设计,第1部分
紧急设计的主要推动力之一是能够查看和收获惯用模式:在代码库中以非平凡的方式重复的过程,结构和习惯用法. 但是,有时这些模式对您隐藏. 在< 演进式体系结构和紧急设计>系列的第一期中 ,我描 ...
最新文章
- Nat. Mach. Intell. | 基于深度学习预测DNA甲基化位点
- dbms_java_java实现DBMS
- ADO之connection
- 每隔10秒钟打印一个“Helloworld”
- ABB 压包指令PackRawBytes 解包指令UnpackRawBytes
- StringBuffer类的常用方法
- ID3决策树预测的java实现
- java线程状态(六种五种)
- 13-1CPU控制器的功能和工作原理
- 软文管家发布平台_企业软文如何做好
- 21考研:你是为了什么考研?
- 31_ElasticSearch 修改IK分词器源码来基于mysql热更新词库
- 国产充电宝有哪些,国产充电宝哪个牌子的质量好?
- 搜索引擎使用的一些基本技巧
- 剖析Android开发未来的出路在哪里,这原因我服了
- Python:for循环语句
- SpringBoot仿牛客论坛项目实战
- 无垠PE组合工具箱纯净无广告的PE启动盘
- loopback具体作用
- 计算机软件检验 考试题,历年计算机软件水平程序员部分考试真题
热门文章
- 软件开发详细设计说明书(转载)
- ZT 王国维先生“人生三大境界”的具体含义是什么?
- 解决Windows10/11系统桌面背景或者IDE背景出现的莫名其妙的方框/格子
- linux切换用户时报错 bash: /home/book/.bashrc: 权限不够 bash-4.2$
- redis集群搭建及管理命令
- JAVA连接SQL2005
- 微信小程序开发项目源代码_SSM项目汽车租赁平台+后台管理系统
- 三步跳过wegame登录
- 单位根检验、协整检验和格兰杰因果关系检验三者之间的关系
- HDU5761 Rower Bo