`

java二进制运算 原码、补码、反码

    博客分类:
  • java
阅读更多
最近在socket传输时,包头涉及到了二进制的运算,特地做了一下整理。

原码:
   原码是指 把最高位做为符号位(0:表示正数,1:表示负数),其它位数则没有正负之分。
   eg:
   4:0000 0100  -4:1000 0100

反码:
   反码是 如果是正数 表示方法和原码一样,如果为负数,则保留符号位为1,其它位数对其取反。
   eg:
   4的反码:0000 0100   -4的反码:1111 1011

补码:
   补码是计算机运算的一种方式,正数的补码就是其本身,负数的补码为 其反码+1 补码的取值范围为: -128~0~127 共256个。
   eg:
   (4)-(4) = 0    ----10进制
   (0000 0100) + (1111 1100) = (0000 0000)--二进制补码方式运算

位移:(左移、右移都为2的倍数)
   位移操作只针对int型有效。在java中,int的长度,始终为32位,即占用4个字节。byte,short,char,long也可以进行位移操作,但是最终都转换为32位进行操作。
   << 左移 4左移2位 即 4<<2 0000 0100   0001 0000  左移则低位补0.
   >> 右移 4右移2位,即4>>2 0000 0100  0000 0001 右移,如果为正数 高位补0,如果为负数则高位补1
   >>> 无符号右移,则不管是正数还是负数,高位都补0.

位运算符:~(按位非),|(按位或),&(按位与),^(按位异或)
   ~(按位非)对该整数的二进制形式逐位取反 4 ~4:(0000 0100) (1111 1011)再对其进行补码运算 得出为:-5
   |(按位或)两个整数的二进制形式逐位进行逻辑或运算,原理为:1|0=1,0|0=0
   &(按位与)两个整数的二进制形式逐位进行逻辑或运算,原理为:1|0=1,0|0=0, 1|1 = 1
   ^(按位异或)两个整数的二进制形式逐位进行逻辑或运算,原理为:1|0=1,0|0=0, 1|1 = 0 ,0|1=1


/**
* 8位,取高4位
* @param data
* @return
*/
public static int get2HighBit(byte data){
int dataTmp = 0;
dataTmp = (short)(data>>4)&0x0F;
return dataTmp;
}
/**
* 8位,取低4位
* @param data
* @return
*/
public static int get2LowBit(byte data){
int dataTmp = 0;
dataTmp = (short)(data>>0)&0x0F;
return dataTmp;
}


  


分享到:
评论

相关推荐

    二进制运算器的源代码

    这是一个模拟计算机进行加法和数的原码、反码,补码的分析工具。我希望这个工具能对需要它的人有所帮助,所以决定通过GNU General Public License发布这个自由软件。我使用的编译环境是VS2010Express。如有问题可以...

    二进制编码运算模拟器

    一个实现二进制运算的模拟器,通过它可以学习原码、反码、补码的一些内容,还包含了浮点数运算。运行环境.NET 4.0

    javascript 二进制运算技巧解析

    1、原码、反码、补码,正数减法转补码加法 js 在进行二进制运算时,使用 32 位二进制整数,由于 js 的整数都是有符号数,最高位0表示正数,1表示负数,因此,js 二进制运算中使用的整数表达范围是 代码如下: -Math....

    二进制运算

    java int 类型4个字节,1... 正数的原码,反码,补码都是一样 负数反码的原码的符号位不变,其它的位数取反(0-1==1-0) 负数补码是反码+1 0的反码和补码都是0 java中所有数都是符号的 计算机都是以补码的方式来计算

    计算机组成原理本科生模拟试卷02

    一、选择题(每小题1分,共15分) ... 3 在定点二进制运算器中,减法运算一般通过( )来实现。 A 原码运算的二进制减法器 B 补码运算的二进制减法器 C 原码运算的十进制加法器 D 补码运算的二进制加法器

    yuchuangu85#Develop-Source#一文搞懂位运算、补码、反码、原码1

    上面的Demo中有“2”和“-2”,这是两个十进制数,并且是int类型的(java中占四个字节),位运算是基于二进制bit来的,所以我们需要将十进制转换为二进制

    原码, 反码与补码基础知识详细介绍

    原码, 反码,补码详解 本篇文章讲解了计算机的原码, 反码和补码. 并且进行了深入探求了为何要使用反码和补码, 以及更进一步的论证了为何可以用反码, 补码的加法计算原码的减法. 论证部分如有不对的地方请各位牛人...

    二进制加减法模拟程序

    输入两个整数,求出它们各自的原码,反码,补码,经过加减运算后的结果,并判断是否溢出

    计算机组成原理第二章-运算方法与运算器

    原码、补码、反码、移码等码制之间的关系以及各码制之间真值数的转换; 补码的加减运算,定点原码一位乘、除运算,定点补码一位乘、除运算及其逻辑结构; 变形补码、运算方法(尤其是补码)的理解,溢出、进位等问题...

    负数二进制

    本文档详细介绍了 数字在计算机中时如何用二进制表示的,以及计算机是如何计算减法运算的,简单介绍了数字的原码、反码、补码,没有了解这方面的 请先去了解一点,有助于理解。

    计算机基础习题集.doc

    正数二进制原码和补码相同 B. 所有的十进制小数都能准确地转换为有限的二进制小数 C. 汉字的计算机机内码就是国标码 D. 存储器具有记忆能力,其中的信息任何时候都不会丢失 5. 原码 -0的反码是 _____。 A. +0 B. -...

    Colennn#HelloWorld#进制、位运算及其运用1

    运算位运算应用:1.数据加密:​ 一个数据对想用的数据异或^两次,其值不变2.两个变量值的交换:原码、反码和补码原码:二进制,最高为符号位,0为正数,1为负数​

    网络管理员的一些重要内容

    (2)数据的表示:包括数的表示(原码、反码、补码表示,整数和实数的机内表示)、非数值表示(字符和汉字表示、声音表示、图像表示)、校验方法和校验码(奇偶校验、海明校验、CRC校验)。 (3)数据运算:主要考查...

    数制与编码.pptx

    常见数制类型及表示方法 不同数制间的相互转换:十进制转换为二进制、十进制转换成八进制、十进制转换成十六进制、非十进制数之间的相互转换 ...二进制数的四种表示形式:原码、补码、反码、移码 补码的加减法运算

    北理大学计算机实验基础-实验二-实验报告表答案.docx

    01110001 原码 11100111 反码 01110001 反码 10011000 补码 01110001 补码 10011001 实验报告表2-4 二进制算术运算实验记录表 操作数一 操作数二 运算符 是否溢出 实验结果 正确结果 溢出对结果产生了什么影响?...

    Python 刷题笔记:位运算专题一

    原码:直接将一个数值转化为二进制,其首位代表符号,0 为正 1 为负 反码:正数的反码与原码相同;负数反码最高位符号位不变,其余为取反,即 1 变 0、0 变 1 补码:正数的补码与原码相同;负数的补码为其反码 +1 以...

    Java自学程序员必备+计算机基础+操作系统,组成原理,数据结构+自学必备,内功提升

    5、位运算和进制转换,原码,反码和补码.md 6、大学老师没讲过的计算机三大原则.md 7、人有三六九等,语言也有高低之分.md 8、程序的编译和解释太有用了.md 9、冯诺依曼体系结构了解吗.md 10、计算机其实很笨,只...

    预备知识(数制与码制)

    进位计数制及各计数制间的转换 二进制数的运算 带符号数的表示方法——原码·反码·补码 定点数与浮点数 bcd码和ascii码

    计算机应用基础(2).doc

    用8位二进制数表示一个带符号的整数,用原码、补码和反码表示时,其所表示的 范围各为多少? 10.何谓定点数,何谓浮点数,为什么浮点数的表示范围比定点数大? 11.什么是补码、反码,如何求一个二进制数的补码,试求...

    PHP 使用位运算实现四则运算的代码

    所有数据在计算机中都是采用二进制,即 1 和 0 的编码存储和运算。 这次尝试在 PHP 中使用位运算实现四则运算,首先介绍一些基本概念: 原码:将最高位作为符号位(0表示正,1表示负),其它数字位代表数值本身的...

Global site tag (gtag.js) - Google Analytics