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

1.二进制计数法的概念

人们在日常生活中和生产实践中,我们接触到越来越多的数字,创造了分组计数的制度.而我们的生活中,一般采用了"满十进一"的十进制计数法,

我们现在已经熟悉并经常运用这一种计数法了.但也有采用其他计数法.如二进制,六进制,十六进制等计数法.现在就来讲一讲"二进制"和"十进制"的关系

2.十进制和二进制数的互化

(1)化十进制数为二进制数

<1>比较小的十进制数为二进制数可以用观察法.

例:化45为二进制数

因为2的0次方,1次方,2次方~~~10次方分别等于1,2,4,8,16,32,64,128,256,512,1024.

所以 45=32+8+4+1=2⑤+2③+2②+1=1*2⑤+0*2④+1*2②+0*2①+1*1=101101(二进制)

<2>一般化法

利用短除法(通常叫做"二除取余法")

(2)化二进制数为十进制数

这是比较方便的,只需把二进制是写成展开式;计算即得.

3对于有符号的数

二进制的最高位时符号位:0表示正数,1表示负数

正数的原码,反码,补码都一样

负数的反码=它的原码符号位不变,其它位取反

负数的补码=它的反码+1

0的反码,补码都是0

java中的数都是有符号的

在计算机运算的时候,都是以补码的方式来运算的。

java中有4中位运算,分别是按位与&,按位或|,按位异或^,按位取反。

&:两位全为1,结果为1

|:两位有一个为1,结果为1

^:两位有一个为1,一个为0,结果为1

取反:0取反位1,1取反位0

java中有3个移位运算符

>> 算术右移:低位溢出,符号位不变,并用符号位补溢出的高位

<<算术左移:符号位不变,低位补0

>>>逻辑右移:低位溢出,高位补0

原文地址:https://www.cnblogs.com/wzj4858/p/8206637.html

时间: 2024-07-31 21:31:08

java二进制,原码、反码、补码、位运算的相关文章

关于 原码 反码 补码 位运算

二进制 原码:最高位为符号位,0为正  1为负 正数的原码 反码 补码 都是相同的 反码:负数的反码为原码符号位不变 其它对应变化(1变0 0变1) 补码:等于 反码+1 3^-3 =? 运算过程 -3 10000000 00000000 00000000 00000011 原码 11111111 11111111 11111111 11111100 反码 先求得-3的补码 11111111 11111111 11111111 11111101 补码 得到3的补码 00000000 000000

java原码,反码,补码 位运算

原码是什么?反码是什么?补码是什么? 原码:正数:正数转换为二进制位就是这个正数的原码负数:负数的绝对值转换成二进制位然后在高位补1就是这个负数的原码 int 2 原码: 00000000 00000000 00000000 00000010 int -2 原码:10000000 00000000 00000000 00000010 00000000 00000000 00000000 00000011 # 3原码10000000 00000000 00000000 00000011 # -3原

Java基础——原码, 反码, 补码 详解

上一篇提到了原码.反码和补码(见 http://www.linuxidc.com/Linux/2015-02/113862.htm),可是自己又捋了半天,有点懂了的样子,可是又不能清晰的表达.暂且记住以下两点吧: 正数的反码和补码都与原码一样: 负数的反码.补码与原码不同,负数的反码:原码中除去符号位,其他的数值位取反,0变1,1变0.负数的补码:其反码+1. 做个小Demo,分别写出7和-7的原码.反码.补码.(其中第一位是符号位,0表示正数,1表示负数) Demo 7 -7 原码 00000

二进制 原码 反码 补码(搞定)

一个案例搞懂原码,反码和补码. 首先,先记下如下7条规则: 对于有符号的而言, 1.二进制的最高位是符号位: (0表示正数,1表示负数) 2.正数的原码,反码,补码都一样: 3.负数的反码=它原码的符号位不变,其他取反(0变1,1变0): 4.负数的补码=它的反码+1: 5.0的反码,补码都是0: 6.Java没有无符号数,换言之,Java中的数都是有符号的: 7.在计算机运算的时候,都是以补码的方式来运算的.(这句话代表着我们要演示计算过程,就要转来转去.苦笑脸) 下面是我用计算:1-2 来演

C语言原码反码补码与位运算.

目录: 一.机器数和真值     二.原码,反码和补码的基础概念     三.为什么要使用原码,反码和补码     四.原码,补码,反码再深入     五.数据溢出测试     六.位运算的运算说明     七.位运算的简单应用   一.机器数和真值 机器数(computer number)是数字在计算机中的二进制表示形式 机器数有2个特点:一是符号数字化,二是其数的大小受机器字长的限制 比如:十进制中的+6,计算机字长为8位,转换成二进制就是00000110,如果是-6,就是10000110

&lt;13&gt;【了解】计算机中的进制+【理解】原码反码补码基本概念+【理解】为什么要引入反码、补码?+【掌握】位运算符介绍及使用+位运算应用:编程实现10进制转2进制

1 #include <stdio.h> 2 3 int main(int argc, const char * argv[]) { 4 5 //定义10进制数,打印出10.8.16进制的值 6 int a = 13; 7 printf("%d\n",a); 8 printf("%o\n",a); 9 printf("%x\n",a); 10 11 //int 64 4个字节 12 int b = 0b0000000000000000

原码,反码,补码详解及 Java中&gt;&gt;和&gt;&gt;&gt;的区别

前两天分析 HashMap 的 hash 算法的时候,遇见了 >> 和 >>> 这两个符号,当时查了下资料,在脑子中过了一下.今天又碰到了,没想到竟然忘了  0-0........ 我这记忆力哎,不说了.只好做个笔记,提醒自己,遇到啥不会的最好记下来,好记性不如烂博客啊~ 既然涉及到位运算,我们追本索源,就先从最基础的原码,补码和反码学起.搜了一下这方面的资料,发现一篇专门介绍这方面的文章,写的很是透彻,便直接引用过来了,原文地址是:http://www.cnblogs.co

[C++基础]原码/反码/补码、二进制位运算

原码/反码/补码 编码 定义 实例 原码 最高位为符号位,"0"表示正,"1"表示负,其余位表示数值的大小. [+100]原=01100100 [+0]原=00000000 [-100]原=11100100 [-0]原=10000000注意:在原码中,零有两种表示形式. 反码 正数的反码与其原码相同:负数的反码是对其原码逐位取反,但符号位除外. [+100]反=01100100 [+0]反=00000000 [-100]反=10011011[-0]反=1111111

原码, 反码, 补码 详解以及负数的按位与运算

本篇文章讲解了计算机的原码, 反码和补码. 并且进行了深入探求了为何要使用反码和补码, 以及更进一步的论证了为何可以用反码, 补码的加法计算原码的减法. 论证部分如有不对的地方请各位牛人帮忙指正! 希望本文对大家学习计算机基础有所帮助! 一. 机器数和真值 在学习原码, 反码和补码之前, 需要先了解机器数和真值的概念. 1.机器数 一个数在计算机中的二进制表示形式, 叫做这个数的机器数.机器数是带符号的,在计算机用一个数的最高位存放符号, 正数为0, 负数为1. 比如,十进制中的数 +3 ,计算

java基础:原码反码补码

计算机在操作的时候,都是采用数据对应二进制的补码来计算的: 原码 反码 补码 原码:用原码,反码,补码来分别表示+7,和-7. 首先得到7的二进制:111