精华内容
下载资源
问答
  • 今天学习Java时讲到了原码数据弊端,... 机器数和机器数的真值在学习原码,反码和补码之前, 需要先了解机器数和真值的概念。1、机器数一个数在计算机中的二进制表示形式,叫做这个数的机器数。机器数是带符号的,...

    今天学习Java时讲到了原码数据弊端,然后就进入了迷惑期。云里雾里听不懂。

    就上网找嘛。发现是计算机组成原理的知识。然后就想到一张图:

    167211888bc4f2a368df3d16c68e6d51.png

    太真实了。

    所以!要关注前沿技术,还有注重基础知识!!

    冲鸭!!!


    【搬运自 关于编程哪些事 

    一. 机器数和机器数的真值

    在学习原码,反码和补码之前, 需要先了解机器数真值的概念。

    1、机器数

    一个数在计算机中的二进制表示形式,叫做这个数的机器数。机器数是带符号的,在计算机用机器数的最高位存放符号,正数为0,负数为1。

    比如,十进制中的数 +3 ,计算机字长为8位,转换成二进制就是0000 0011。如果是 -3 ,就是 100 00011 。

    那么,这里的 0000 0011 和 1000 0011 就是机器数。

    2、机器数的真值

    因为第一位是符号位,所以机器数的形式值就不等于真正的数值。

    例如上面的有符号数 1000 0011,其最高位1代表负,其真正数值是 -3,而不是形式值131(1000 0011转换成十进制等于131)。所以,为区别起见,将带符号位的机器数对应的真正数值称为机器数的真值

    例:0000 0001的真值 = +000 0001 = +1,1000 0001的真值 = –000 0001 = –1

    83dc63d819cac5aadf0700d0243729d8.png

    二. 原码, 反码, 补码的基础概念和计算方法

    在探求为何机器要使用补码之前,让我们先了解原码、反码和补码的概念。对于一个数,计算机要使用一定的编码方式进行存储,原码、反码、补码是机器存储一个具体数字的编码方式。

    1. 原码

    原码就是符号位加上真值的绝对值,即用第一位表示符号,其余位表示值。比如:如果是8位二进制:

    [+1]原= 0000 0001

    [-1]原= 1000 0001

    第一位是符号位,因为第一位是符号位,所以8位二进制数的取值范围就是:(即第一位不表示值,只表示正负。)

    [1111 1111 , 0111 1111]    (正向最大和反向最大)

    [-127 , 127]

    原码是人脑最容易理解和计算的表示方式。

    2. 反码

    反码的表示方法是:

    • 正数的反码是其本身;

    • 负数的反码是在其原码的基础上,符号位不变,其余各个位取反。

    [+1] = [0000 0001]原= [0000 0001]反

    [-1] = [1000 0001]原= [1111 1110]反

    可见如果一个反码表示的是负数,人脑无法直观的看出来它的数值。通常要将其转换成原码再计算。

    3. 补码

    补码的表示方法是:

    • 正数的补码就是其本身;

    • 负数的补码是在其原码的基础上,符号位不变,其余各位取反,最后+1。(也即在反码的基础上+1)

    [+1] = [0000 0001]原= [0000 0001]反= [0000 0001]补

    [-1] = [1000 0001]原= [1111 1110]反= [1111 1111]补

    对于负数,补码表示方式也是人脑无法直观看出其数值的。通常也需要转换成原码再计算其数值。

    三. 为何要使用原码、反码和补码

    在开始深入学习前,我的学习建议是先"死记硬背"上面的原码,反码和补码的表示方式以及计算方法。

    现在我们知道了计算机可以有三种编码方式表示一个数,对于正数因为三种编码方式的结果都相同:

    [+1] = [0000 0001]原= [0000 0001]反= [0000 0001]补

    所以不需要过多解释,但是对于负数:

    [-1] = [10000001]原= [11111110]反= [11111111]补

    可见原码,反码和补码是完全不同的。既然原码才是被人脑直接识别并用于计算表示方式,为何还会有反码和补码呢?

    首先, 因为人脑可以知道第一位是符号位,在计算的时候我们会根据符号位,选择对真值区域的加减。(真值的概念在本文最开头) 但是对于计算机,加减乘数已经是最基础的运算,要设计的尽量简单,计算机辨别"符号位"显然会让计算机的基础电路设计变得十分复杂!

    于是人们想出了将符号位也参与运算的方法。我们知道,根据运算法则减去一个正数等于加上一个负数,即:1-1 = 1 + (-1) = 0, 所以机器可以只有加法而没有减法,这样计算机运算的设计就更简单了。

    于是人们开始探索将符号位参与运算,并且只保留加法的方法。

    首先来看原码:

    计算十进制的表达式:1 - 1 = 0

    1 - 1 = 1 + (-1) = [0000 0001]原+ [1000 0001]原= [1000 0010]原= -2

    如果用原码表示,让符号位也参与计算,显然对于减法来说,结果是不正确的。这也就是为何计算机内部不使用原码表示一个数。

    为了解决原码做减法的问题, 出现了反码:

    计算十进制的表达式:1 - 1 = 0

    1 - 1 = 1 + (-1) = [0000 0001]原+ [1000 0001]原= [0000 0001]反+ [1111 1110]反= [1111 1111]反= [1000 0000]原= -0

    发现用反码计算减法,结果的真值部分是正确的。而唯一的问题其实就出现在"0"这个特殊的数值上,虽然人们理解上+0和-0是一样的,但是0带符号是没有任何意义的,而且会有[0000 0000]原和[1000 0000]原两个编码表示0。

    于是补码的出现,解决了0的符号问题以及0的两个编码问题:

    1-1 = 1 + (-1) = [0000 0001]原+ [1000 0001]原= [0000 0001]补+ [1111 1111]补= [1 0000 0000]补=[0000 0000]补=[0000 0000]原

    (注意:进位1不在计算机字长里。因为计算机字长只有8位,超出的第9位被抛弃)

    这样0用[0000 0000]表示,而以前出现问题的-0则不存在了。

    而且可以用[1000 0000]表示-128:-128的由来如下:

    (-1) + (-127) = [1000 0001]原+ [1111 1111]原= [1111 1111]补+ [1000 0001]补= [1 1000 0000]补 = [1000 0000]补(超出的第9位被抛弃)

    -1-127的结果应该是-128,在用补码运算的结果中,[1000 0000]补就是-128,但是注意因为实际上是使用以前的-0的补码来表示-128,所以-128并没有原码和反码表示。(对-128的补码表示[1000 0000]补,算出来的原码是[0000 0000]原,这是不正确的)

    使用补码,不仅仅修复了0的符号以及存在两个编码的问题,而且还能够多表示一个最低数。这就是为什么8位二进制,使用原码或反码表示的范围为[-127, +127],而使用补码表示的范围为[-128, 127]。

    因为机器使用补码,所以对于编程中常用到的有符号的32位int类型,可以表示范围是: [-2^31, 2^31-1] 因为第一位表示的是符号位,而使用补码表示时又可以多保存一个最小值。

    四 原码, 反码, 补码 再深入

    计算机巧妙地把符号位参与运算,并且将减法变成了加法,背后蕴含了怎样的数学原理呢?

    将钟表想象成是一个1位的12进制数。如果当前时间是6点,我希望将时间设置成4点,需要怎么做呢?我们可以:

    1. 往回拨2个小时:6 - 2 = 4

    2. 往前拨10个小时:(6 + 10) mod 12 = 4

    3. 往前拨10+12=22个小时:(6+22) mod 12 =4

    826af5925ea8219999c98aea8a26ef5f.png

    上面2,3方法中的mod是指取模操作,16 mod 12 =4,即用16除以12后的余数是4。

    所以钟表往回拨(减法)的结果可以用往前拨(加法)替代!

    现在的焦点就落在了如何用一个正数,来替代一个负数呢?上面的例子我们能感觉出来一些端倪,发现一些规律。但是数学是严谨的,不能靠感觉。

    首先介绍一个数学中相关的概念:同余

    同余的概念

    两个整数a,b,若它们除以整数m所得的余数相等,则称a,b对于模m同余。

    记作 a ≡ b (mod m)

    读作 a 与 b 关于模 m 同余。

    举例说明:

    4 mod 12 = 4

    16 mod 12 = 4

    28 mod 12 = 4

    所以4,16,28对于模 12 同余。

    负数取模

    正数进行mod运算是很简单的,但是负数呢?

    下面是关于mod运算的数学定义:

    2226fefe89c4596c8712d64f2d487d8f.png

    上面是截图,"取下界”符号找不到如何输入(word中粘贴过来后乱码)。下面是使用"L"和"J"替换上图的"取下界"符号:

    x mod y = x - y L x / y J

    上面公式的意思是:

    x mod y等于 x 减去 y 乘上 x与y的商的下界。

    以 -3 mod 2 举例:

    -3 mod 2

    = -3 - 2xL -3/2 J

    = -3 - 2xL-1.5J

    = -3 - 2x(-2)

    = -3 + 4 = 1

    所以:

    (-2) mod 12 = 12-2=10    (-2) mod 12 = -2 - 12x[-2/12] = -2 - 12x(-1) = -2 + 12 = 10

    (-4) mod 12 = 12-4 = 8    (-4) mod 12 = -4 - 12x[-4/12] = -2 -12x(-1) = -4 + 12 = 8

    (-5) mod 12 = 12 - 5 = 7    (-5)mod 12 = -5 - 12x[-5/12] = -5 -12x(-1) = -5 + 12 = 7

    开始证明

    再回到时钟的问题上:

    回拨2小时 = 前拨10小时

    回拨4小时 = 前拨8小时

    回拨5小时= 前拨7小时

    注意,这里发现的规律!

    结合上面学到的同余的概念,实际上:

    (-2) mod 12 = 10

    10 mod 12 = 10

    -2与10是同余的。

    (-4) mod 12 = 8

    8 mod 12 = 8

    -4与8是同余的。

    距离成功越来越近了。要实现用正数替代负数,只需要运用同余数的两个定理:

    反身性:

    a ≡ a (mod m)

    这个定理是很显而易见的。

    线性运算定理:

    如果a ≡ b (mod m),c ≡ d (mod m) 那么:

    (1)a ± c ≡ b ± d (mod m)

    (2)a * c ≡ b * d (mod m)

    所以:

    7 ≡ 7 (mod 12)

    (-2) ≡ 10 (mod 12)

    7 -2 ≡ 7 + 10 (mod 12)

    现在我们为一个负数,找到了它的正数同余数。但是并不是7-2 = 7+10,而是 7 -2 ≡ 7 + 10 (mod 12) ,即计算结果的余数相等。

    接下来回到二进制的问题上,看一下:2-1=1的问题。

    2-1=2+(-1) = [0000 0010]原+ [1000 0001]原= [0000 0010]反+ [1111 1110]反

    先到这一步,-1的反码表示是1111 1110。如果这里将[1111 1110]认为是原码,则[1111 1110]原 = -126,这里将符号位除去,即认为是126。

    发现有如下规律:

    (-1) mod 127 = 126

    126 mod 127 = 126

    即:

    2 ≡ 2 (mod 127)

    (-1) ≡ 126 (mod 127)

    2-1 ≡ 2+126 (mod 127)

    2-1 与 2+126的余数结果是相同的!而这个余数,正是我们的期望的计算结果:2-1=1

    所以说一个数的反码,实际上是这个数对于一个模的同余数。而这个模并不是我们的二进制,而是所能表示的最大值!这就和钟表一样,转了一圈后总能找到在可表示范围内的一个正确的数值!

    而2+126很显然相当于钟表转过了一轮,而因为符号位是参与计算的,正好和溢出的最高位形成正确的运算结果。

    既然反码可以将减法变成加法,那么现在计算机使用的补码呢?为什么在反码的基础上加1,还能得到正确的结果?

    2-1=2+(-1) = [0000 0010]原+ [1000 0001]原= [0000 0010]补+ [1111 1111]补

    如果把[1111 1111]当成原码,去除符号位,则:

    [0111 1111]原= 127

    其实,在反码的基础上+1,只是相当于增加了模的值:

    (-1) mod 128 = 127

    127 mod 128 = 127

    2 ≡ 2 (mod 127)

    2-1 ≡ 2+127 (mod 128)

    此时,表盘相当于每128个刻度转一轮。所以用补码表示的运算结果最小值和最大值应该是[-128, 128]。

    但是由于0的特殊情况,没有办法表示128,所以补码的取值范围是[-128, 127]

    展开全文
  • 定点数机器码转换器。十进制输入示例:12345、0.12345、-12345、-0.12345;二进制输入示例:10101、0.10101、-10101、-0.10101,将定点数转换成机器码
  • CPU:中央处理. 相当于人的大脑,运算中心,控制中心. 内存:临时存储数据. 优点:读取熟读快.缺点:容量小,造价高,断电即消失. 硬盘:长期存储数据. 优点:容量大,造价相对较低,断电不消失.缺点:读取速度慢. 操作系统:...

    1.1 计算机硬件基本认知
    CPU:中央处理器. 相当于人的大脑,运算中心,控制中心.
    内存:临时存储数据.
    优点:读取熟读快.缺点:容量小,造价高,断电即消失.
    硬盘:长期存储数据.
    优点:容量大,造价相对较低,断电不消失.缺点:读取速度慢.
    操作系统:统一管理软硬件资源的程序.
    1.2 计算机文件大小单位
    b=bit 位(比特) B=Byte 字节
    1Byte=8bit #一个字节等于8位 简写成1B=8b
    1KB=1024B
    1MB=1024KB
    1GB=1024MB
    1TB=1024GB
    1PB=1024TB
    1EB=1024PB
    1.3 进制转换
    #所有数据在计算机底成 全是以二进制的形式存储来表达某个字符或者某一个符号等.
    二进制:由2个数字组成.有0和1 例如:0b101
    八进制:由8个数字组成.有0,1,2,3,4,5,6,7 例如:0o127
    十进制:由10个数字组成.有0,1,2,3,4,5,6,7,8,9 例如:257
    十六进制:由16个数字组成.有0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f
    (字母大小写都可以,分别代表10,11,12,13,14,15)
    例如:0xff 0Xff 0XFF

    二进制,八进制,十六进制转换成十进制
    规律:用给出的二进制,八进制,十六进制数,方向从右向左,把二进 制,八进制, 十六进制每一位的位数一位一位的排练下来分别乘以2,8,16幂,随着位数的增加,幂也从0开始递增.然后把每一位数累加和就可以了.
    十进制转换成二进制,八进制,十六进制
    规律:用给出的十进制数,分别除以2,8,16,除到商小于对应的2,对应的8,对应的16的时候为止.然后从下(商)到上把每一步剩余的余数依次排练下来,然后在最前面标记0b或者0o或者0x就可以了.

    二进制和八进制转换
    二进制与八进制对应关系
    八进制 二进制
    0------- 000
    1------- 001
    2 -------010
    3--------011
    4--------100
    5 -------101
    6--------110
    7------- 111
    例如:0b1010100101 #二进制转换成八进制
    八进制:从右向左,3位一隔开,不够3位用零补齐,变成
    0b 001 / 010 / 100 / 101
    0o 1 / 3 / 4 / 5
    八进制转换成二进制只需把八进制的每一位数通过对应关系拉下来就可以了.

    二进制和十六进制转换
    二进制和十六进制的对应关系
    十六进制 二进制
    0-----------0000
    1-----------0001
    2-----------0010
    3-----------0011
    4-----------0100
    5-----------0101
    6-----------0110
    7-----------0111
    8-----------1000
    9-----------1001
    a-----------1010
    b-----------1011
    c-----------1100
    d-----------1101
    e-----------1110
    f------------1111
    例如:0b1010100101 #二进制转换成十六进制
    十六进制:从右向左,4位一隔开,不够4位用零补齐,变成:
    0b 0010 / 1010 / 0101
    0x 2 / a / 5
    十六进制转换成二进制只需把十六进制的每一位通过对应关系拉下来就可以了.

    八进制和十六进制需要通过二进制来转换.
    1.4原码,反码,补码 #原码,反码,补码都是二进制数据
    原码:二进制的表现形式.
    反码:二进制码0变1,1变0叫反码,原码和补码之间的转换形式.(首位符号位不取反)
    补码:二进制的存储形式.

    原码和补码可以通过反码相互转换,互为取反加1.(首位符号位不取反)

    提出补码的原因;
    1:补码可以表达一个数的正负.(可以实现计算机的减法操作)
    2:计算机默认只会做加法.比如5+(-3)

    运算顺序:
    首先,运算时是通过补码来进行运算,补码的最高位也要运算,只是算出来的最高位代表正负,然后通过原码来显现出来.

    转换规律:
    如果是一个正数:原码=补码=反码
    如果是一个负数:原码与补码之间互为取反加1.(首位符号不取反)

    总结:
    1:高位0代表正数,高位1代表负数.
    2:计算机在运算时,用补码来运算.
    3:补码运算时,最高位加起来不会进1,只会溢出,只会用来表示正负,而不是值.
    4;如果补码出来是正数就等于原码,如果是负数,要取反加1转换成原码.
    5:首位在取反加1时不变,在运算时需要加减,只代表正负.
    6:加1只在原码或者补码末尾加1.
    1.5编译型和解释型语言区别:
    编译型:一次性,把所有代码编译成机器能识别的二进制码在运行.
    代表语言:C++,C
    优点:执行速度快 .缺点:开发速度慢,调试周期长.

    解释型:代码从上到下一行一行解释并运行.
    代表语言:python ,php
    优点:开发效率快,调试周期短. 缺点:执行速度相对慢.
    1.6注释
    注释:就是对代码的解释,方便大家阅读python代码.所有用#开头的字符串都是注释,注释不会被解释器解析.

    注释种类:
    1:单行注释. 用# 例如:#print(“hello,word”)
    2:多行注释. 用" " "或者’ ’ ’

    多行注释的嵌套:
    如果外层使用三个单引号,里面就使用三个双引号,反之.

    注释具有一定的排错性.
    首先包裹一部分代码,划分错误的区间,然后打开一部分代码,判定这一部分是不是有错,然后逐行进行检测,直到排查出错误.

    电脑快捷键:
    1:画图板命令mspaint
    2:计算机命令calc
    3:保存Ctrl+s
    4:notepad中"#“用Ctrl+q
    5:pacharm中”#"用Ctrl+/p

    展开全文
  • 学习内容 原码、补码、反码 数据类型 变量 ...强制类型转换 ...原码、补码、反码 ...其中运算,只有加法运算,没有减法运算 所以,计算机中的没法直接做减法的,它的减法是通过加法来实现的。...

    学习内容

    • 原码、补码、反码
    • 数据类型
    • 变量
    • ASCII码
    • 赋值
    • 强制类型转换
    • 字符拼接

    原码、补码、反码

    • 为什么要学习? 后面要学习强制类型转换,如果不知道有原反补会看不懂结果。

    根据冯~诺依曼提出的经典计算机体系结构框架。一台计算机由运算器,控制器,存储器,输入和输出设备组成。其中运算器,只有加法运算器,没有减法运算器

    所以,计算机中的没法直接做减法的,它的减法是通过加法来实现的。的减法也可以当成加法的,减去一个数,可以看作加上这个数的相反数。当然没错,但是前提是要先有负数的概念。这就为什么不得不引入一个该死的符号位。

    从硬件的角度上看,只有正数加负数才算减法。
    正数与正数相加,负数与负数相加,其实都可以通过加法器直接相加 
    
    原码,反码,补码的产生过程,就是为了解决,计算机做减法和引入符号位(正号和负号)的问题。
    

    原码

    原码:是最简单的机器数表示法。用最高位表示符号位,‘1’表示负号,‘0’表示正号。其他位存放该数的二进制的绝对值。
    

    若以带符号位的四位二进值数为例

    1010:
       最高位为‘1’,表示这是一个负数,其他三位为‘010’,
       即(0*2^2)+(1*2^1)+(0*2^0)=2
       所以1010表示十进制数(-2)
    

    下图给出部分正负数数的二进制原码表示法:
    在这里插入图片描述

    反码

    原码最大的问题就在于一个数加上他的相反数不等于零。

    反码:
        正数的反码还是等于原码
        负数的反码就是他的原码除符号位外,按位取反。
    

    在这里插入图片描述

    补码

    负数补码与反码末位+1
    

    计算机里面存储的就是补码, 运算也是采用补码运算

    基本数据类型

    • 为什么有数据类型?

      Java语言是强类型语言,对于每一种数据都定义了明确的具体数据类型,在内存中分配了不同

    大小的内存空间

    • Java中数据类型的分类

      基本数据类型

      引用数据类型

    1. 整数型
    • byte 占一个字节 -128到127
    • short 占两个字 -2^15 ~ 2^15-1
    • int 占四个字节 -2^31 ~ 2^31-1
    • long 占八个字节 -2^63 ~ 2^63-1
    1. 浮点型
    • float 占四个字节 -3.403E38~3.403E38 单精度
    • double 占八个字节-1.798E308~1.798E308 双精度
    1. 字符型
    • char 占两个字节 0~65535
    1. 布尔型
    • boolean
      • boolean理论上是占八分之一个字节,因为一个开关就可以决定是true和false了,但是java中boolean类型没有明确指定他的大小
        在这里插入图片描述

    作业

    1. 计算机底层存储数据是以什么形式存储的? (C )
      A. 原码 B.反码 C. 补码

    2. Java中基本数据类型有几种?分别是?他们的默认值分别是?
      4类8种

    • 整数型
      byte 占一个字节 = 8bit (-128到127)
      short 占两个字 = 16bit (-2^15~ 2^15-1)
      int 占四个字节 = 32bit (-2^31~ 2^31-1)
      long 占八个字节 = 64bit (-2^63~ 2^63-1)

    • 浮点型
      float 占四个字节 = 32bit (-3.403E38~3.403E38) 单精度
      double 占八个字节 = 64bit (-1.798E308~1.798E308)
      双精度(默认)

    • 字符型
      char 占两个字节 0~65535

    • 布尔型
      boolean
      boolean理论上是占八分之一个字节,因为一个开关就可以决定是true和false了,但是java中boolean类型没有明确指定他的大小

    1. 原码,反码,补码三者之间如何互相转换?
      原码->反码 正数不变;负数符号位不变,其余位取反。
      原码->补码 正数不变;负数先变反码,反码末位加一即为补码。

    2. 二进制数加法运算的基本特点是“逢二进一”,即0+0=0,0+1=1,1+0=1,1+1=10并进位。运用这一基本法则和十进制运算的类似规律,得出二进制数加法运算1001+101的结果: 1110

    3. 下列语句是否正确?如果不正确,请指明原因。
      int a=120; 正确。
      byte b=120; 正确
      float x=12.0; 不正确,数值默认是double型,比float范围大,若想变为float需要进行强制类型转换,前面加一个(float)。
      float y=12; 不正确,数值12为整型,需要在后方添加F
      double z=12; 正确,整型自动转换为浮点型。
      b=a; 不正确,将int型赋值给byte型,int范围比byte大,需要进行强制类型转换。
      y=z; 道理同上。从double类型转换float类型,需要强制类型转换。

    4. 下列语句是否都正确?其作用都等价吗?为什么?
      char c = ‘a’;
      char c = 0x0061;
      char c = 97;
      正确等价。ASCII码中a=97,十六进制0x0061转化为十进制数为97,所以等价。

    5. 八进制数754中的7对应的位权是(C
      A. 10^2
      B.16^1
      C.8^2
      D.2^2

    6. 十进制数53转换成二进制数是 110101

    7. 假设某计算机的字长为8位,则十进制数(-66)的补码为_10111110_。

    8. 假设某计算机的字长为8位,则十进制数(+75)的反码为_01001011_。

    9. 存储器的1KB存储容量表示 (B)
      A.1024个二进制位
      B.1024个字节
      C.1024个字
      D.1000个字节

    10. 十进制数113.25转换成对应的十六进制数是_1b91d_H

    11. 下列各种数制的数中,最小的数是_D_
      A. (101100)2 = 44
      B. (54)8 = 44
      C. (44)10
      D. (2A)16= 42

    12. 已知8位机器码(补码形式)是10110100,那么表示的十进制真值是 -76

    总结

    今天讲了原码、反码、补码,我课堂上跟不上,算得好慢,上课着急得都快哭了。
    下课我去找了主讲老师,老师又给我讲了一遍,现在我淡定了许多,真的很感谢主讲老师。
    数据类型的转换学得还可以,从今天的学习程度来说,还需要努力。


    让妈妈把《程序员教程》从家邮过来了,上面有好多老师讲到的内容。希望可以接受得再快一点点。

    展开全文
  • 计算机硬件基本认知CPU: 中央处理。相当于人的大脑、运算中心、控制中心内存:临时存储数据。优点:读取速度快;缺点:容量小造价高,断电即消失。硬盘:长期存储数据。优点:容量大,造价相对低,断电不消失;...

    计算机硬件基本认知

    CPU: 中央处理器。相当于人的大脑、运算中心、控制中心

    内存:临时存储数据。优点:读取速度快;缺点:容量小造价高,断电即消失。

    硬盘:长期存储数据。优点:容量大,造价相对低,断电不消失;缺点:读取速度慢。

    操作系统:统一管理计算机软硬件资源

    计算机文件大小单位

    b = bit 位(比特)

    B = Byte 字节

    1Byte = 8 bit #一个字节等于8位 可以简写成 1B = 8b

    1KB = 1024B

    1MB = 1024KB

    1GB = 1024MB

    1TB = 1024GB

    1PB = 1024TB

    1EB = 1024PB

    进制转换

    二进制:由2个数字组成,有0 和 1 例: 0b101

    八进制:由8个数字组成,有0,1,2,3,4,5,6,7 例: 0o127

    十进制:有10个数字组成,有0,1,2,3,4,5,6,7,8,9 例: 250

    十六进制:有16个数字组成,有0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f(字母大小写都可以,分别代表10,11,12,13,14,15) 例:0xff 0Xff 0XFF

    二进制 转化成 十进制

    例: 0b10100101

    运算:1 * 20 + 0 * 21+ 1 * 22 + 0 * 23 + 0 * 24 + 1 * 25 + 0 * 26+ 1 * 27= 1 + 0 + 4 + 0 + 0 + 32 + 0 + 128 = 165

    八进制 转化成 十进制

    例: 0o127

    运算: 7 * 80 + 2 * 81 + 1 * 82 = 7+16+64 = 87

    十六进制 转化成 十进制

    例: 0xff

    运算:15 * 160 + 15 * 161= 255

    十进制 转化成 二进制

    例:426 => 0b110101010

    运算过程: 用426除以2,得出的结果再去不停地除以2,

    直到除完最后的结果小于2停止,

    在把每个阶段求得的余数从下到上依次拼接完毕即可

    十进制 转化成 八进制

    例:426 => 0o652

    运算过程: 用426除以8,得出的结果再去不停地除以8,

    直到除完最后的结果小于8停止,

    在把每个阶段求得的余数从下到上依次拼接完毕即可

    十进制 转化成 十六进制

    运算过程: 用426除以16,得出的结果再去不停地除以16,

    直到除完最后的结果小于16停止,

    在把每个阶段求得的余数从下到上依次拼接完毕即可

    二进制与八进制转换

    二进制与八进制对应关系:

    八进制二进制八进制二进制

    0

    000

    4

    100

    1

    001

    5

    101

    2

    010

    6

    110

    3

    011

    7

    111

    例:1010100101

    八进制:从右向左 3位一隔开 不够三位用0补位 变成:

    001 010 100 101

    0o   1  2  4  5

    二进制与十六进制转换

    二进制与十六进制对应关系:

    十六进制二进制十六进制二进制

    0

    0000

    8

    1000

    1

    0001

    9

    1001

    2

    0010

    A

    1010

    3

    0011

    B

    1011

    4

    0100

    C

    1100

    5

    0101

    D

    1101

    6

    0110

    E

    1110

    7

    0111

    F

    1111

    例:1010100101

    十六进制:从右向左 4位一隔开 不够四位用0补位 变成:

    0010 1010 0101

    0x  2   A     5

    八进制 与 十六进制的转换

    先转换成二进制 再去对应转换

    比如:0x2a5 转换成 1010100101 再转8进制 0o1245

    原码,反码,补码

    概念

    计算机的所有数据在底层都是以二进制的[补码]形式存储实际人们看到的数字是[原码]转化来的而[原码]是通过[补码]得到的

    补码 -> 原码 -> 最后人们看到的数进制转换的时候需要先把内存存储的补码拿出来变成原码在进行转换输出

    计算机底层存储的补码:正数高位补0 负数高位补1(前面空白位全是1)数字 1 00000000 1 正数高位都补0数字-1 11111111 1 负数高位都补1

    原码: 用来转换对应进制反码: 二进制码0变1,1变0叫做反码,反码用于原码补码之间的转换.(符号位不变)补码: 用来做数据的存储运算. 补码提出的根源是让计算机底层的实现减法操作(可以表达出一个数的正负)言外之意:计算机默认只会做加法,例:5+(-3) => 5 - 3乘法除法:是通过左移和右移 << >> 来实现

    运算

    (原码 反码 补码之间的转换 , 符号位不要动)正数: 原码 = 反码 = 补码负数: 原码 = 补码取反加1 给补码求原码负数: 补码 = 原码取反加1 给原码求补码

    例:5 + (-3) => 5 - 35 => 101-3 => ?(1) 先算-3的原码1 0000…000 011(2) 取反1 1111…111 100(3) 加1 最终值是补码 (用来做算术运算或存储用的)1 1111…111 101  5 => 0 00…00 101-3 =>  1  11 … 11  101  2 => 0 00…00 010

    Python的认知

    Python是89年开发的语言,创始人吉多·范罗苏姆(Guido van Rossum),别称:龟叔(Guido).Python具有非常多并且强大的第三方库,使得程序开发起来得心应手.Python程序员的信仰:人生苦短,我用python!

    python之禅

    1 importthis2

    3 print(this)4

    5 """

    6 Beautiful is better than ugly.7 Explicit is better than implicit.8 Simple is better than complex.9 Complex is better than complicated.10 Flat is better than nested.11 Sparse is better than dense.12 Readability counts.13 Special cases aren't special enough to break the rules.14 Although practicality beats purity.15 Errors should never pass silently.16 Unless explicitly silenced.17 In the face of ambiguity, refuse the temptation to guess.18 There should be one-- and preferably only one --obvious way to do it.19 Although that way may not be obvious at first unless you're Dutch.20 Now is better than never.21 Although never is often better than *right* now.22 If the implementation is hard to explain, it's a bad idea.23 If the implementation is easy to explain, it may be a good idea.24 Namespaces are one honking great idea -- let's do more of those!25

    26 Process finished with exit code 027

    28 """

    版本

    python2x:原码不规范,重复较多python3x:原码清晰,简单

    编译型与解释型语言区别

    编译型:一次性,把所有代码编译成机器能识别的二进制,在运行代表语言:c,c++优点: 执行速度块缺点: 开发速度慢,调试周期长

    解释型:代码从上到下一行一行解释并运行代表语言:python,php优点: 开发效率快,调试周期短缺点: 执行速度相对慢python语言可以直接在linux和windows跨平台使用.

    python的解释器

    Cpython(官方推荐)把代码转化成c语言能识别的二进制码

    Jpython把代码转化成java语言能识别的二进制码

    其他语言解释器把代码转化成其他语言能识别的二进制码

    PyPy将所有代码一次性编译成二进制码,加快执行效率(模仿编译型语言的一款python解释器)

    注释

    就是对代码的解释 方便大家阅读代码

    注释的分类单行注释:用#号开头,后面跟上任意字符多行注释:语法可以是成对的三个单引号''' ''' 可以是成对的三个双引号 """ """ 并且支持跨行

    注释的注意点当三个单引号和三个双引号同时存在的时候,要注意如果外面是三个单引号,里面用三个双引号如果外面是三个双引号,里面用三个单引号

    注释的排错性包裹一部分代码,执行另外一部分,查看是否报错,进行一一排查

    变量

    可以改变的量,实际具体指的是内存中的一块存储空间

    关于变量的含义

    1 a = 5

    2 print(a)

    写完a =5 在内存里面开辟两个空间 分别是5和这个值和变量a这个名

    并且让变量a指向5这个值,形成一种映射关系 这个映射关系就是地址

    2. 变量的声明

    只有以下三种

    #1

    a= 5

    #2

    a,b= 2,3

    #3

    a= b = 12

    3. 变量的命名

    变量的命名

    字母数字下划线,首字符不能为数字

    严格区分大小写,且不能使用关键字

    变量命名有意义,且不能使用中文哦

    import 引入 keyword 模块,用来获取所有关键字

    1 importkeyword2 parint(keyword.kwllist)3

    4 #['False', 'None', 'True', 'and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']

    4. 变量的交换

    1 #python 特有

    2

    3 a = 1

    4 b = 2

    5

    6 a, b =b, a7 print(a,b)

    常量:就是不可以改变的量, python之中没有明确定义, 所以约定俗成变量名大写就是常量,

    表示不可改变

    概念

    计算机的所有数据在底层都是以二进制的[补码]形式存储实际人们看到的数字是[原码]转化来的而[原码]是通过[补码]得到的

    补码 -> 原码 -> 最后人们看到的数进制转换的时候需要先把内存存储的补码拿出来变成原码在进行转换输出

    计算机底层存储的补码:正数高位补0 负数高位补1(前面空白位全是1)数字 1 00000000 1 正数高位都补0数字-1 11111111 1 负数高位都补1

    原码: 用来转换对应进制反码: 二进制码0变1,1变0叫做反码,反码用于原码补码之间的转换.(符号位不变)补码: 用来做数据的存储运算. 补码提出的根源是让计算机底层的实现减法操作(可以表达出一个数的正负)言外之意:计算机默认只会做加法,例:5+(-3) => 5 - 3乘法除法:是通过左移和右移 << >> 来实现

    运算

    (原码 反码 补码之间的转换 , 符号位不要动)正数: 原码 = 反码 = 补码负数: 原码 = 补码取反加1 给补码求原码负数: 补码 = 原码取反加1 给原码求补码

    例:5 + (-3) => 5 - 35 => 101-3 => ?(1) 先算-3的原码1 0000…000 011(2) 取反1 1111…111 100(3) 加1 最终值是补码 (用来做算术运算或存储用的)1 1111…111 101  5 => 0 00…00 101-3 =>  1  11 … 11  101  2 => 0 00…00 010

    Python的认知

    Python是89年开发的语言,创始人吉多·范罗苏姆(Guido van Rossum),别称:龟叔(Guido).Python具有非常多并且强大的第三方库,使得程序开发起来得心应手.Python程序员的信仰:人生苦短,我用python!

    版本

    python2x:原码不规范,重复较多python3x:原码清晰,简单

    编译型与解释型语言区别

    编译型:一次性,把所有代码编译成机器能识别的二进制,在运行代表语言:c,c++优点: 执行速度块缺点: 开发速度慢,调试周期长

    解释型:代码从上到下一行一行解释并运行代表语言:python,php优点: 开发效率快,调试周期短缺点: 执行速度相对慢python语言可以直接在linux和windows跨平台使用.

    python的解释器

    Cpython(官方推荐)把代码转化成c语言能识别的二进制码

    Jpython把代码转化成java语言能识别的二进制码

    其他语言解释器把代码转化成其他语言能识别的二进制码

    PyPy将所有代码一次性编译成二进制码,加快执行效率(模仿编译型语言的一款python解释器)

    注释

    就是对代码的解释 方便大家阅读代码

    注释的分类单行注释:用#号开头,后面跟上任意字符多行注释:语法可以是成对的三个单引号''' ''' 可以是成对的三个双引号 """ """ 并且支持跨行

    注释的注意点当三个单引号和三个双引号同时存在的时候,要注意如果外面是三个单引号,里面用三个双引号如果外面是三个双引号,里面用三个单引号

    注释的排错性包裹一部分代码,执行另外一部分,查看是否报错,进行一一排查

    变量

    可以改变的量,实际具体指的是内存中的一块存储空间

    关于变量的含义

    a = 5

    print(a)

    1

    2

    写完a=5 在内存里面开辟两个空间 分别是5这个值和变量a这个名并且让变量a指向5这个值,形成一种映射关系.这个映射关系就是地址.

    变量的声明只有以下三种:

    a = 5

    b = 6

    print(a)

    print(b)

    1

    2

    3

    4

    a,b = 5,6

    print(a)

    print(b)

    1

    2

    3

    a = b = 10

    print(a,b)

    1

    2

    变量的命名

    变量的命名字母数字下划线,首字符不能为数字严格区分大小写,且不能使用关键字变量命名有意义,且不能使用中文哦

    import 引入 keyword 模块,用来获取所有关键字

    import keyword

    print(keyword.kwlist)

    1

    2

    变量的交换

    a = 11

    b = 12

    1

    2

    python特有:

    a, b = b, a

    print(a, b)

    1

    2

    通用写法:

    a = 11

    b = 12

    temp = a

    print(temp)

    a = b

    print(a)

    b = temp

    print(a, b)

    1

    2

    3

    4

    5

    6

    7

    8

    常量就是不可改变的量,python当中没有明确定义常量的关键字,所以约定俗成把变量名大写就是常量,表示不可改变

    展开全文
  • 原码反码补码

    2018-07-13 11:31:27
    原码  5 =&gt; 0b101, 1 =&gt; 0b1, -1=&gt; -0b1, bin(-1) 反码 ... 正数的反码与原码... 数字电路的CPU中的运算实现了加法,但是没有减法,减法是转换成加法  负数在计算机中使用补码存...
  • 机器数和机器数的真值在学习原码,反码和补码之前, 需要先了解机器数和真值的概念。1、机器数一个数在计算机中的二进制表示形式,叫做这个数的机器数。机器数是带符号的,在计算机用机器数的最高位存放符号,正数...
  • 上一期我们讲述了进制数及转换,这一期我们来了解计算机原码、反码和补码,本期内容重点是补码。来自网络引入这三种编码的原因是什么?是为了解决计算机减法问题,因为CPU运算中只有加法,所有要把减法转换加法...
  • 机器数和真值在学习原码, 反码和补码之前, 需要先了解机器数和真值的概念。机器数一个数在计算机中的二进制表示形式, 叫做这个数的机器数。机器数是带符号的,在计算机用一个数的最高位存放符号, 正数为0, 负数为1....
  • turn5.exe是一款多功能的进制转换器,能够在十进制、8进制、十六进制和二进制之间进行互转。还可以转换字符串为十六进制、十六进制转字符串,用二进制表示原码、反码和补码。编码转换可以将字符转Base64,Base64转...
  • 一、机器数和真值在学习原码反码,补码和移码之前需要先了解机器数和真值的概念。1、机器数一个数在计算机中的二进制表示形式,叫做这个数的机器数。机器数是带符号的,在计算机中用一个数的最高位存放符号正数为0...
  • 计算机中的数字量表示为双极性的方法很多,如用原码、补码、反码和二进制码等,其中,补码和偏移二进制码用于D/A转换器。下面介绍偏移二进制码和双极性转换。 偏移二进制码是在二进制码的基础上加一个偏移量得到的...
  • 机器数和真值在学习原码, 反码和补码之前, 需要先了解机器数和真值的概念.1、机器数一个数在计算机中的二进制表示形式, 叫做这个数的机器数。机器数是带符号的,在计算机用一个数的最高位存放符号, 正数为0, 负数为...
  • 为什么需要反码和补码 ...o在计算机的时候,只有加法没有减法,为了将减法转换为加法,设计反码; o但是反码有缺陷,正负相加 0 的表示不唯一; 补码 o为了解决反码正负相加不唯一的情况,使用高位溢出解决;
  • 上一期我们讲述了进制数及转换,这一期我们来了解计算机原码、反码和补码,本期内容重点是补码。来自网络引入这三种编码的原因是什么?是为了解决计算机减法问题,因为CPU运算中只有加法,所有要把减法转换加法...
  • cpu: 中央处理. 相当于人的大脑.运算中心,控制中心. 内存: 临时存储数据.优点:读取速度快,缺点:容量小,造价高,断电即消失. 硬盘: 长期存储数据.优点:容量大,造价相对低,断电不消失,缺点:读取速度慢. 操作系统:...
  • 一、十进制与二进制的相互转换 1. 十进制转换为二进制,分为整数部分和小数部分。 整数部分采用除2倒取余法,具体做法:用2去除十进制整数,可以得到一个商和余数;在用2去除商,又会得到一个商和余数,如此进行,...
  • 进制转换器 IEEE 754 单精度浮点数转换器 补码计算器 补码、反码 原码: 1个符号位 + 值位: 0为正数,1位负数 补码: 正数的补码:自身不变; 负数的补码:符号位不变,其余"按位取反,末尾加一"; 反码: ...
  • 原码、反码和补码

    2019-05-23 14:45:52
    ⑵使减法运算转换为加法运算,进一步简化计算机中运算的线路设计 所有这些转换都是在计算机的最底层进行的,而在我们使用的汇编、C等其他高级语言中使用的都是原码。 现在我们知道了计算机可以有三种编码方式表示一...
  • 它是完全独立、稳定、低噪声、低功耗高速转换器。其封装形 式为16角的DIP封装和SOIC封装,可以在高温、高压、湿度高的吓境下正常工作。  1.PCM56U的连接及引脚说明  PCM56U的结构如图1所示,该器件有16个引脚,...
  • 16进制反码转10进制正码.zip可以导入数据后点击转换器,一次性完成。
  • 原码 5 => 0b101,1 => 0b1 ,-1 => -0b1, bin(-1) ...负数表示法 数字电路的CPU中的运算实现了加法,但是没有减法,减法是转换成加法 p 负数在计算机中使用补码存储,-1的补码为1111 111 ...
  • 原码: 5 => 0b101; 1=> 0b1; -1=> -0b1; bin(-1) ...早期数字电路的CPU中的运算实现了加法,但没有减法,减法要转换成加法 负数在计算机中使用补码存储,-1的补码为1111 1111 5-...
  • 计算机中的数字量表示为双极性的方法很多,如用原码、补码、反码和二进制码等,其中,补码和偏移二进制码用于D/A转换器。下面介绍偏移二进制码和双极性转换。  偏移二进制码(又叫移码)是在二进制码的基础上加一个...
  • 前面我们已经讲解了进制之间的相互转换,还有疑问的可以点击链接直接跳转:一篇博文带你了解java中的进制转换 学过计算机理论的同学都会知道,计算机一台计算机由运算,控制,存储器,输入和输出设备组成。运算...
  • 原码、反码、补码

    2008-04-05 18:30:00
    ⑴使符号位能与有效值部分一起参加运算,从而简化...⑵使减法运算转换为加法运算,进一步简化计算机中运算的线路设计 1、原码、反码和补码的表示方法 (1) 原码: 在数值前直接加一符号位的表示法。 例如:...
  • 源码,反码,补码

    千次阅读 2011-01-30 16:05:00
    ⑵使减法运算转换为加法运算,进一步简化计算机中运算的线路设计 1、原码、反码和补码的表示方法 (1) 原码: 在数值前直接加一符号位的表示法。 例如: 符号位 数值位 [+7]原= 0 0000111 B [-7]原= ...
  • 原码 5=&gt;0b101,1=&gt;0b1,-1=&gt;-ob1,bin(-1) ...负数在电路的CPU中的运算实现了加法,但是没有减法,减法是转换成了加法 负数在计算机中使用补码存储,-1的补码位1111 1111...
  • 进制之间转换与位移运算欢迎使用Markdown编辑新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左...

空空如也

空空如也

1 2 3 4 5
收藏数 94
精华内容 37
关键字:

反码转换器