目录:     一.机器数和真值     二.原码,反码和补码的基础概念     三.为什么要使用原码,反码和补码     四.原码,补码,反码再深入     五.数据溢出测试     六.位运算的运算说明     七.位运算的简单应用    一.机器数和真值       机器数(computer number)是数字在计算机中的二进制表示形式     机器数有2个特点:一是符号数字化,二是其数的大小受机器字长的限制     比如:十进制中的+6,计算机字长为8位,转换成二进制就是00000…
尽管能查到各种文献,亲自归纳出自己的体系还是更能加深对该知识的理解.     本篇文章便是在结合百度百科有关原码.反码.补码和位运算的介绍并深度借鉴了张子秋和Liquor相关文章后整理而出.   目录:     一.机器数和真值     二.原码,反码和补码的基础概念     三.为什么要使用原码,反码和补码     四.原码,补码,反码再深入     五.数据溢出测试     六.位运算的运算说明     七.位运算的简单应用    一.机器数和真值       机器数(computer nu…
原码, 反码, 补码的基础概念和计算方法. 对于一个数, 计算机要使用一定的编码方式进行存储. 原码, 反码, 补码是机器存储一个具体数字的编码方式. 1. 原码 原码就是符号位加上真值的绝对值, 即用第一位表示符号, 其余位表示值. 比如如果是8位二进制: [+1]原 = 0000 0001 [-1]原 = 1000 0001 第一位是符号位. 因为第一位是符号位, 所以8位二进制数的取值范围就是: [1111 1111 , 0111 1111] 即 [-127 , 127] 原码是人脑最容易…
一.二进制,位运算,移位运算 1.二进制 对于原码, 反码, 补码而言, 需要注意以下几点: (1).Java中没有无符号数, 换言之, Java中的数都是有符号的; (2).二进制的最高位是符号位, 0表示正数, 1表示负数; (3).正数的原码, 反码, 补码都一样; (4).负数的反码=它的原码符号位不变, 其他位取反; (5).负数的补码=它的反码+1; (6).0的反码, 补码都是0; (7).在计算机运算的时候, 都是以补码的方式来运算的. 2.位运算 Java中有4个位运算, 分别…
一.二进制,位运算,移位运算 1.二进制 对于原码, 反码, 补码而言, 需要注意以下几点: (1).Java中没有无符号数, 换言之, Java中的数都是有符号的; (2).二进制的最高位是符号位, 0表示正数, 1表示负数; (3).正数的原码, 反码, 补码都一样; (4).负数的反码=它的原码符号位不变, 其他位取反; (5).负数的补码=它的反码+1; (6).0的反码, 补码都是0; (7).在计算机运算的时候, 都是以补码的方式来运算的. 2.位运算 Java中有4个位运算, 分别…
1.正数:原码,反码,补码:都一样. 2.负数:和正数的储存方式不同,负数都是以补码形式存储的. <1>负数的补码 把负数的原码除了符号位取反后再+1. <2>负数的原码 把对应的正数的符号位变为1即可 eg: 符号位 数值位 +7     0  000 0111 -7   1       000 0111 <3>负数的反码 将符号位以外的位取反 eg: 符号位 数值位 -7   1       111 1000 <4>负数的补码 在反码的基础上+1 eg:…
Java基础-原码反码补码 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 注意,我们这里举列的原码和反码只是为了求负数的补码,在计算机中没有原码,反码的存在,只有补码. 一.原码 1>.正数的原码就是它的本身 假设使用一个字节存储整数,整数10的原码是:0000 1010 2>.负数用最高位是1表示负数 假设使用一个字节存储整数,整数-10的原码是:1000 1010 二.反码 1>.正数的反码跟原码一样 假设使用一个字节存储整数,整数10的反码是:0000 1010…
本篇文章讲解了计算机的原码, 反码和补码. 并且进行了深入探求了为何要使用反码和补码, 以及更进一步的论证了为何可以用反码, 补码的加法计算原码的减法. 论证部分如有不对的地方请各位牛人帮忙指正! 希望本文对大家学习计算机基础有所帮助! 一. 机器数和真值 在学习原码, 反码和补码之前, 需要先了解机器数和真值的概念. 1.机器数 一个数在计算机中的二进制表示形式,  叫做这个数的机器数.机器数是带符号的,在计算机用一个数的最高位存放符号, 正数为0, 负数为1. 比如,十进制中的数 +3 ,计…
本篇文章讲解了计算机的原码, 反码和补码. 并且进行了深入探求了为何要使用反码和补码, 以及更进一步的论证了为何可以用反码, 补码的加法计算原码的减法. 论证部分如有不对的地方请各位牛人帮忙指正! 希望本文对大家学习计算机基础有所帮助! http://www.cnblogs.com/zhangziqiu/archive/2011/03/30/ComputerCode.html 一. 机器数和真值 在学习原码, 反码和补码之前, 需要先了解机器数和真值的概念. 1.机器数 一个数在计算机中的二进制…
<< 左移 按二进制形式把所有的数字向左移动对应的位数,高位移出(舍弃),低位的空位补零. 格式 需要移位的数字 << 移位的次数 计算过程 1. 按二进制形式把所有的数字向左移动对应的位数,高位移出(舍弃),低位的空位补零 2. 当左移的运算数是int 类型时,每移动1位它的第31位就要被移出并且丢弃: 3. 当左移的运算数是long 类型时,每移动1位它的第63位就要被移出并且丢弃. 4. 当左移的运算数是byte 和short类型时,将自动把这些类型扩大为 int 型. 1…
一:计算机硬件基本认知 cpu:   中央处理器.   相当于人的大脑.运算中心,控制中心. 内存:  临时存储数据. 优点:读取速度快,缺点:容量小,造价高,断电即消失. 硬盘:  长期存储数据. 优点:容量大,造价相对低,断电不消失,缺点:读取速度慢. 操作系统:统一管理计算机软硬件资源的程序 二: 计算机文件大小单位 b = bit  位(比特) B = Byte 字节 1Byte = 8 bit   #一个字节等于8位  可以简写成 1B = 8b 1KB = 1024B 1MB = 1…
原码:就是我们自己看的,以及机器输出给我们看的 补码:机器永远是以补码的形式将数据保存在计算机中 正数: 原码=反码=补码 负数: 反码:原码的符号位不变,其他位取反 ,1变0   0变1 补码:机器存储数据的方式 等于 反码+1 例子: 96(默认int数据类型): 原码:00000000 00000000 00000000 01100000 共32位 补码:00000000 00000000 00000000 01100000 -96: 原码:10000000 00000000 000000…
一.  标识符 第一个字母必须是英文字母或下划线 二. 数据存储形式(补码存储) 最高位是符号位 ---- 0表示整数 ; 1 表示负数 1. 正数:原码 = 反码 = 补码 例子 : (10) 原码 : 0000 1010 反码 : 0000 1010 补码 : 0000 1010 2. 负数:符号位不变 反码 : 其余位按位取反 补码 : 反码+1  例子: (-10) 原码 : 1000 1010 反码 : 1111  0101 补码 : 1111  0110…
标识符.变量.数据类型.类型转换.进制转换.原码反码补码 标识符: java50个关键字不能做标识符,以数字开头不能做标识符(这个老是忘记写一个类名的时候) 变量: 变量分为成员变量和局部变量,注意作用域的不同. 数据类型: 1.基本数据类型(8种 byte.short.int.char.float.double.boolean.long) 2.引用数据类型 进制转换: 原码反码补码:(第一位是符号位0正1负) 正数的原码 反码 补码是一样的 负数的补码先通过原码计算出反码,反码在计算出补码 例…
1.回顾 使用gcc编译代码 gcc hello.c -o hello windows下编译代码 C语言编译步骤: 预处理(头文件展开,干掉注释) gcc -E hello.c -o hello.i 编译 (生成汇编代码) gcc -S hello.i -o hello.s 汇编 (生成目标代码) gcc -C hello.s -o hello.o 链接 gcc hello.o -o hello_elf 2.1常量和变量 数据结构——研究数据怎么存 算法——研究数据怎么运算 数据怎么存呢? 内存…
1. 原码 +7的原码是0000 0111 -7的原码是1000 0111 +0的原码是0000 0000 -0的原码是1000 0000 2. 反码 一个数如果值为正,那么反码和原码相同. 一个数如果为负,那么符号位为1,其他各位与原码相反 +7的反码0000 0111 -7的反码1111 1000 -0的反码1111 1111 3. 补码 原码和反码都不利于计算机的运算,如:原码表示的7和-7相加,还需要判断符号位. 正数:原码,反码补码都相同 负数:最高位为1,其余各位原码取反,最后对整个…
①深入浅出的了解枚举类型 先看一段代码: enum Size{SMALL,MEDIUM,LARGE}; public class EnumTest { public static void main(String[] args) { Size s=Size.SMALL; Size t=Size.LARGE; //s和t引用同一个对象? System.out.println(s==t); //false //是原始数据类型吗? System.out.println(s.getClass().isP…
对于有符号的而言:   ①二进制的最高位是符号位: 0表示正数,1表示负数   ②正数的原码,反码,补码都一样   ③负数的反码=它的原码符号位不变,其它位取反(0->1,1->0)   ④负数的补码=它的反码+1   ⑤0的反码,补码都是0   ⑥php没有无符号数,换言之,php中的数都是有符号的   ⑦在计算机运算的时候,都是以补码的方式来运算的. php中有4个位运算,分别是”按位与&.按位或|.按位异或^,按位取反~”,它们的运算规则是:   按位与& : 两位全为1…
一个例子说明原码,反码,补码: 下面进行5和-5的原码,反码,补码表示: 5的原码:0000 0101 5的反码:0000 0101 5的补码:0000 0101 -5的原码:1000 0101 -5的反码:1111 1010 -5的补码:1111 1011 现在来看位运算: 1.>>表示右移(有符号右移),如:15>>2的结果是3,-31>>3的结果是-4,左边以该数的符号位补充,移出的部分将被抛弃. 转为二进制的形式可能更好理解(省略左边的三个字节),0000 11…
//原码,反码,补码 #include<stdio.h> #include<stdlib.h> //数值的表示方法——原码.反码和补码 //原码:最高位为符号位,其余各位为数值本身的绝对值 //反码: //正数:反码与原码相同 //负数:符号位为1,其余位对原码取反 //补码: //正数:原码.反码.补码相同 //负数:最高位为1,其余位为原码取反,再对整个数加1 // // //在计算机系统中,数值一律用补码来表示(存储). //主要原因:使用补码,可以将符号位和其它位统一处理:…
原码 数字在计算机中以二进制表示,8位的字长,最高位是符号位, 正数为0,负数为1.比如,3为0000 0011: -3为1000 0011. 注意,Java中int为32位.3的16进制表示为3,-3的16进制为fffffffd. 反码 正数的反码和原码相同. 负数的反码为符合位不变,其余按位取反. 3 为0000 0011: -3为1111 1100. 补码 正数的补码和原码相同. 负数的补码为反码+1. 3 为0000 0011: -3为1111 1101 与(&) 按位与,位数对齐,全部…
原码就是符号位加上真值的绝对值, 即用第一位表示符号, 其余位表示值. 反码的表示方法是:正数的反码是其本身:负数的反码是在其原码的基础上, 符号位不变,其余各个位取反. 补码的表示方法是在反码的基础上+1java中的数是以补码的方式存储的…
一:学习内容 进制:二进制.八进制.十进制.十六进制 进制转换 原码.反码.补码 二:进制 二进制 1.二进制:只有0和1,逢2进1 2.举例:0+0=0.0+1=1.1+1=10 3.过程剖析:二进制11+1=100 1+1=0进1,1+1=0进1,故为100 八进制 1.八进制:0到7,逢8进1 2.举例:1+7=10.1+2=3 十进制 1.十进制:0到9,逢10进1 十六进制 1.说明:0 1 2 3 4 5 6 7 8 9 a b c d e f,逢16进1,a相当于十进制的10,b相…
a=6                                     a=-18 a 的原码就是0000 0000 0000 0110        1000 0000 0001 0010 反码:          0000 0000 0000 0110         1111 1111 1110 1101 补码:          0000 0000 0000 0110         1111 1111 1110 1110 对于正数,它的反码就是其原码(原码和反码相同):负数的反…
#include <stdio.h> /* 本题结果为:-4 short类型占据2字节 ;赋值后实际占据了3个字节,所以有溢出警告提示,结果只保留0xfffc 保存二进制:1111 1111 1111 1100 (补码) 减1: 1111 1111 1111 1011 取反: 1000 0000 0000 0100 原码: 1000 0000 0000 0100对应十进制为-4 */ main() { short x=0xafffc; printf("%d",x); get…
/** * 二进制 binary 如: 1010 * 八进制 octal 如: 070 * 十六进制 hexadecimal 如: 0x7f * * 1Byte = 8bits * 1WORD = 2Bytes = 16bits "字" * 2WORD = 4Bytes = 32bits = 1DWORD "双字" * * 原码, 反码和补码 * 二进制原码中, 第一位代表符号位, 1为负(negative), 0为正(positive) * 正数: 原码 = 反码…
一.机器值和真值 1.机器值 一个数在计算机中的二进制表示形式,  叫做这个数的机器数.机器数是带符号的,在计算机用一个数的最高位存放符号, 正数为0, 负数为1. 比如,十进制中的数 +3 ,计算机字长为8位,转换成二进制就是00000011.如果是 -3 ,就是 10000011 . 那么,这里的 00000011 和 10000011 就是机器数. 2.真值 因为第一位是符号位,所以机器数的形式值就不等于真正的数值.例如上面的有符号数 10000011,其最高位1代表负,其真正数值是 -3…
1.原码.补码.反码的定义和表示方法. 数在计算机中是以二进制形式表示的. 数分为有符号数和无符号数. 原码.反码.补码都是有符号定点数的表示方法. 一个有符号定点数的最高位为符号位,0是正,1是副. 原码:原码就是符号位加上真值的绝对值, 即用第一位表示符号, 其余位表示值.,原码就是这个数本身的二进制形式. 原码是人脑最容易理解和计算的表示方式. 例如:如果是8位二进制: [+1]原 = 0000 0001      二进制的首位是0,表示+,其余位数表示值: [-1]原 = 1000 00…
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字节为例来说: 对于无符号的数值(原码反码及补码都一样),最大值为1111  1111  1111  1111=65535 最小值为0000  0000  0000  0000=0 对于有符号的来说较为复杂: 二进制原码最大为0111  1111  1111  1111=215-1=32767 二进制原码最小为1111  1111  1111  1111=-(215-1)=-32767正0和负0:0000000000000000=1000000000000000=0所以,二进制原码表示时,范…