计算机存储形式与进制转换

因为计算机能够识别二进制序列,所以计算机会以二进制的形式存储一个数 。对于一个正数,以原码的形式存储。对于负数,以补码的形式存储。

正数的原码,反码,补码相同:

例:1

原码:00000000 00000000 00000000 00000001

反码:00000000 00000000 00000000 00000001

补码:00000000 00000000 00000000 00000001

负数:负数以补码的形式存储(最高位是符号位,1表示负,0表示正)

例:-1

原码:10000000 00000000 00000000 00000001

反码:11111111 11111111 11111111 11111110(符号位不变,其余位按位取反)

补码:11111111 11111111 11111111 11111111(原码取反再加一)

大端小端:因为计算机存储的最小单位是字节,而一个字节是8个bit位,所以我们将整型4个字节的1表示为:00 00 00 01

例:1

大端形式:00 00 00 01

小端形式:01 00 00 00

通常我们在书写时采用大端形式,而计算机在存储时采用小端存储,我们可以来验证:

union B
{
                 int a;
                 char b;
};
int main()
{
                 union B A;
                A.a = 1;
                printf( "%c\n",A.b);
                system( "pause");
                return 0;
}

按照小端存储的形式,输出的结果应该是ASCII码为1的值。

二进制与十进制转换:

>>右移:二进制向右移位,正数的话空出来的补0;

例:7>>2=1(注意不能写成7<<-2,这儿是错误的形式)

00000000 00000000 00000000 00000111

00000000 00000000 00000000 00000001

<<左移:空出来的位补0

例:4<<1=8;

00000000 00000000 00000000 00000100

00000000 00000000 00000000 00001000

算术移位和逻辑移位:

只有再对于负数右移时才考虑的一种情况:因为负数的最高位是符号位,所以当向右移时,空出来的位是补0还是补1.

算术移位:空出来的位补1.

逻辑移位:空出的位补0.

具体是算术移位还是逻辑移位,取决于电脑平台,所以当负数右移时其程序不具有移植性。

按位与:针对二进制的每一位进行的运算,同为1才为1,否则为0;

例7&5=5

00000000 00000000 00000000 00000111

00000000 00000000 00000000 00000101

00000000 00000000 00000000 00000101

按位或:针对二进制的每一位进行的运算,至少有一个位为1才为1,否则为0;

例:8|4=12

00000000 00000000 00000000 00001000

00000000 00000000 00000000 00000100

00000000 00000000 00000000 00001100

异或:针对二进制的每一位进行的运算,相同为0,不同为1;

例:7^4=3

00000000 00000000 00000000 00000111

00000000 00000000 00000000 00000100

00000000 00000000 00000000 00000011

取反:针对二进制的每一位进行的运算,1变0,0变1;

00000000 00000000 00011000 00000011

11111111 11111111 11100111 11111100

时间: 2024-10-04 20:35:55

计算机存储形式与进制转换的相关文章

计算机基础-1(进制转换)

信息的编码 (ASCII)    分为七位和八位     七位的 共128    八位的 256   考的重点是七位的. 空格 32 '0' ~ '9' 48~57 'A' ~ 'Z' 65~90 'a' ~ 'z' 97~122 数字(10个)+字母(52个)+标点(33个)=95  (可打印) +33(控制码 如空格)  =128   (不可打印) 进制转换  二进制.八进制.十六进制.十进制转换 将二进制.八进制.十六进制转换为十进制 二进制.八进制和十六进制向十进制转换都非常容易,就是“

内存0.1---内存里数据的表示形式以及进制转换

操作系统的位数与内存的关系: 32位操作系统是指系统的寻址空间是2的32次方,即4G,也就是说32位操作系统只支持最大4G的内存,64位操作系统寻址空间理论上为2的64次方,即17179869184G,目前最大支持128G,主流主板最大容量为16G. 内存的概念: 内存存储的是二进制数,可以将内存抽象为开关.一个开关对应两应两种状态,一种状态对应1,一种状态对应0.把八个开关放到一间房子里面,这间房子就相当于一个字节.房间的门牌号相当于地址.无数个房间堆叠且,形成了摩天大厦,大厦就相当于内存.

计算机进制转换

一.计算机只认识0和1,二进制. 二.2进制转换成 8进制 和 16进制,如下图: 二进制 > 八进制 :  研究上图发现,3位最高二进制可以用来表示一位八进制.所以,将二进制分解每3位,不够前面补0,然后每3位转换为10进制,顺序排列即可. 二进制 > 十六进制  :4位最高二进制可以用来表示一位十六进制.所以,将二进制分解每4位,不够前面补0,然后每4位转换为10进制,超过9用字母表示即可.顺序排列即可. 如下: 二进制 > 十进制:   11001001 = 2^7+2^6+2^3

计算机基础知识(一)——进制转换

由于去年是十月一之后才来的提高班,所以错过了米老师讲的一些基础知识,现在跟着十二期一起听课,把欠下的补回来! 一.计算机为什么使用二进制,而不是用十进制,十六进制? 大家都知道计算机内部都是用二进制来处理数据的,那么大家知道为什么使用二进制,而不是十进制,十六进制吗?其实原因很简单,就是简单,因为二进制只有0和1,它再怎么组合也是0和1,运算很简单嘛! 二.进制转换 在转换之前,我们先要知道二进制的"权重".1,2,4, 8, 16, 32, 64, 128,转换的时候都是以权重为基础

进制转换与数字存储实例

说明:本实例基于C语言编写 一.进制转换 1).十进制转其它进制 DEC转BIN:N=25 (25)2=11001 DEC转OCT:N=125 (125)8=175 DEC转HEX:N=2581 (2581)16=A15 2).其它进制转十进制 BIN转DEC:(1100101)2 (1100101)2=1x26+1x25+0x24+0x23+1x22+0x21+1x20=64+32+0+0+4+0+1=101 OCT转DEC:(2612)8 (2612)8=2x83+6x82+1x81+2x8

计算机常用进制转换

进制转换;十进制转二进制公式倒除法,余数逆序二进制转+进制公式:当前的数字(0.1)乘以2的位数次方,在相加1001 -> 1x2^3+0x2^2+0x2^1+1x2^0八进制转二进制公式: [一转三位]八进制的一位相当于二进制的三位,计算时按十进制转换,不足三位高位补0二进制转八进制公式: [三位一取]从低位开始,每三位得到一个八进制数字,最后高位不足则补0十六进制转二进制公式:[一转四位]十六进制的一位相当于二进制的四位,计算时按t进制转换,不足四位高位补0二进制转十六进制公式: [四位一取

03 php 数据类型:整数,进制转换,浮点,字符,布尔,数组,空类型,类型转换,算术运算,比较运算

03 数据类型:整数,进制转换,浮点,字符,布尔,数组,空类型,类型转换, 算术运算,比较运算,逻辑运算,短路现象, 三目运算符,字符型运算: 数据类型 整体划分 标量类型: int, float, string, bool 复合类型: array,     object 特殊类型: null,     resouce 整数类型int, integer 3种整数表示法 十进制写法:123: $n1 = 123; 八进制写法: 0123 $n2 = 0123; 十六进制写法: 0x123 $n3

进制转换和变量

进制转换和变量 计算机内存存储数据的部位有硬盘和内存 硬盘存储的是可见数据,内存存储的是不可见数据 硬盘,内存所存储的数据都是二进制数据 我们使用的计算机室为了实现数据存储,数据运算,数据管理 [1]我们(程序员)必须了解数据是如何存储到计算机中的 [2]我们(程序员)必须了解,我们如何通过代码将数据存储到计算机中,以及如何使用这些数据 [对于人类]我们人类通常对于十进制数据更加熟悉 [对于计算机]计算机通常用二进制来存储数据,因为二进制对于计算机而言比较容易实现 内存存数数据的基本单元是三极管

【搬砖】安卓入门(2)- Java开发编程基础--进制转换和运算符

02.01_Java语言基础(常量的概述和使用)(掌握) A:什么是常量 在程序执行的过程中其值不可以发生改变 B:Java中常量的分类 字面值常量 自定义常量(面向对象部分讲) C:字面值常量的分类 字符串常量        用双引号括起来的内容 整数常量        所有整数 小数常量        所有小数 字符常量        用单引号括起来的内容,里面只能放单个数字,单个字母或单个符号 布尔常量        较为特殊,只有true和false 空常量        null(数组