精华内容
下载资源
问答
  • 原反补码

    2020-03-31 12:16:22
    一:无符号原码 无符号数:整个机器字长全部二进制均为数值位,没有符号位,相当于数绝对值。 表示范围: 8位二进制数:28次方不同状态 ...n位无符号数表示范围为:0 ------2n次方-1 有符号数 ...

    一:无符号原码

    在这里插入图片描述

    无符号数:整个机器字长的全部二进制均为数值位,没有符号位,相当于数的绝对值。

    在这里插入图片描述
    表示范围:
    8位二进制数:2的8次方不同的状态
    0000 0000 ------1111 1111 =1 0000 0000 -1
    0 ---------------------255 =2的8次方-1
    n位的无符号数表示范围为:0 ------2的n次方-1

    有符号数

    +156D =0 1001 1100B
    -156D = 1 1001 1100B
    真值 机器数

    定点表示

    小数点:隐含存储(定点数:事先约定;浮点数:按规则浮动)
    定点小数:
    在这里插入图片描述
    定点整数
    在这里插入图片描述

    二:原码

    +156D = 0 1001 1100B

    • 156D = 1 1001 1100B
    • 真值 机器数
      约定:用X表示真值,用[X]原表示原码,[x]补表示补码,[X]表示反码,[X]移表示移码
      纯小数原码
      在这里插入图片描述
      纯整数原码
      在这里插入图片描述

    运算:

    00001110 +10001110
    根据最高位调整成相应的无符号数运算
    ------>0 0001110 -0 0001110

    三: 补码反码移码

    在这里插入图片描述

    加法运算

    在这里插入图片描述

    四:补码

    在这里插入图片描述
    对于正数:补码与原码表示相同,[X]补=[X]原
    对于负数:原码符号位不变,数值位按位取反,末位加1,(即所谓“取反加1")
    此规则同样适用于由[X]补求[X]原
    在这里插入图片描述
    纯整数补码:
    在这里插入图片描述
    纯小数补码
    在这里插入图片描述

    五:反码

    对于正数,反码与原码的表示相同,[X]反=[X]原
    对于负数,原码符号位不变,数值部分按位取反。
    此规则同样适用于由[X]反求[X]原
    表示范围:与原码一样
    纯整数反码:
    在这里插入图片描述

    原补反相互转换。

    在这里插入图片描述
    在这里插入图片描述

    六:移码

    在这里插入图片描述
    在这里插入图片描述
    移码就是在真值X上加上一个常数(偏置值),通常这个常数为2的n次方。
    在这里插入图片描述

    移码转为真值

    在这里插入图片描述

    展开全文
  • 简介数据的原反补码 第一位为符号位 ,正数存储的是0,负数存储的是1   例子:char类型1个字节8位,也就是8个存储 0 0 0 0 0 0 0 0   由图可以知道第一位为符号位因此可以存储变量的范围是-(27-1) ~ ...

    简介数据的原反补码

    一、概念的介绍


    1. 原码:第一位为符号位 ,正数存储的是0,负数存储的是1
    2. 反码:1->0 0->1 符号位不变
    3. 补码:补码就是反码+1
    4. 注意:正数的原反补码都等于原码

    二、例子详解

      例子1:char类型1个字节8位,也就是8个存储

    0 0 0 0 0 0 0 0

      由图可以知道第一位为符号位因此可以存储变量的范围是-(27-1) ~ (27 -1)但是你发现实际存储的大小是-27(-128) ~ 27-1(127),为什么呢?仔细查看发现出现一种 1 0 0 0 0 0 0 0情况,这个是-0,因为-0根本不存在,因此设计出的-0为当前进位的最小值也就是-27.因此char的存储范围为-27(-128) ~ 27-1(127)。

    符号类型 byte bit 范围
    char 1 8 -27(-128) ~ 27-1(127)
    short 2 16 -215(-32 768) ~ 215-1(32 767)
    int 4 32 –231(-2 147 483 648) ~ 231-1(2 147 483 647)
    long 4 32 -231(-2 147 483 648) ~ 231-1(2 147 483 647)
    long long 8 64 -263(-9.2233720368548e+18) ~ 263-1(9.2233720368548e+18)
    char 1 8 0 ~ 28-1(255)
    unsigned short 2 16 0 ~ 2^16-1(65 535)
    unsigned int 4 32 0 ~ 232-1(4 294 967 295)
    unsigned long 4 32 0 ~ 232-1(4 294 967 295)
    unsigned long long 8 64 0 ~ 264-1(1.844674407371e+19)

    例子2:

    10进制数 原码 补码 反码
    1 00000001 00000001 00000001
    -1 10000001 11111110 11111111

    三、注意事项

    1. 正数的原反补码一致
    2. 反码取反的时候符号位不会改变
    3. 计算机存储的都是反码
    4. 临界值问题

    例子:
    -128 =10000000 - 00000001 = 01111111=127
    127=0111111+00000001 = 100000000 = -128

    四、引用

    https://blog.csdn.net/weixin_42856843/article/details/81989737

    展开全文
  • 有符号整、小数的原补码表示范围,及补码、反码多表示一位原因。计算机组成原理学习笔记。

      mark一下。
      以n位机器码为例。
    1. 原码:
      有符号整数:[-(2^n-1), 2^n-1];
      有符号小数:[-(1-2^(-n)), 1-2^(-n)];
    2. 反码的表示范围和原码相同
    3. 补码
      有符号整数:[-2^n, 2^n-1];
      有符号小数:[-1, 1-2^(-n)];

      从上我们可以看出,有符号数的补码要比原码和反码多表示出一位来,那么究竟是为什么呢?

      补码比原码、反码多出一位的原因:
      以8位机器码表示的有符号整数为例,它可以表示的原码和反码范围是[-127, 127],而可以表示的补码范围是[-128, 127]。
      原码和反码的±0是不同的表示方法,即:
        +0:00000000
        -0 :10000000
      而反码的±0都是同一个表示方法,同样以8位机器码为例:
        ±0 :00000000
      因此补码中便多出了一个<10000000>,可以用来表示其他的数,此处即可以表示真值为-128。在最位的1,既表示负号、又表示数值位。

    展开全文
  • 1.实型(浮点型):float 单精度 4字节、double 双精度 8字节 ① 实型常量 voidfun1() ... //不以F结尾实型常量,为double类型 printf("sizeof(3.14)=%u\n",sizeof(3.14));//double ...
    1.实型(浮点型):float 单精度 4字节、double 双精度 8字节
        ① 实型常量
    1. void fun1()  
    2. {  
    3.     // 实型常量  
    4.     // 不以F结尾的实型常量,为double类型  
    5.     printf("sizeof(3.14) = %u\n"sizeof(3.14));// double  
    6.     // 以F结尾的为float类型  
    7.     printf("sizeof(3.14F) = %u\n"sizeof(3.14F));// float  
    8. }  
            
     
        ② 实型变量
     
    1. void fun2()  
    2. {  
    3.     // 赋值语句,尽量保证 = 两边类型匹配  
    4.     float F = 0.0F;  
    5.     double D = 0.0;  
    6.     printf("F = %f\n", F);  
    7.     printf("D = %lf\n", D);  
    8.     // 获取键盘输入  
    9.     scanf("%f", &F);  
    10.     printf("F = %f\n", F);  
    11.     scanf("%lf", &D);  
    12.     printf("D = %lf\n", D);  
    13. }  
     
            
     
        ③ 实型存储
            
     
    2.二进制、八进制、十进制、十六进制的转换
        ① 十进制转二进制、八进制、十六进制
             方法:短除法
            
        ② 二进制、八进制、十六进制转十进制
             方法:进制的位次方
             例:    1100 1100 → 1*2^7+1*2^6+0*2^5+0*2^4+1*2^3+1*2^2+0*2^1+0*2^0
                                            =128+64+0+0+8+4+0+0=204
                        0123 → 1*8^2+2*8^1+3*8^0=64+16+3=83
                        0x12 → 1*16^1+2*16^0=16+2=18
        ③ 二进制转八进制、十六进制
             a、二进制转八进制:二进制从右往左,每三位二进制对应一位八进制
                        1100 1100 → 011 001 100 → 314
             b、二进制转十六进制:二进制从右往左,每四位二进制对应一位十六进制
                        1100 1110 → 12 14 → 0xCE
        ④ 八进制、十六进制转二进制
             a、八进制转二进制:八进制从右往左,每八进制对应二进制
                        0567 →  101 110 111 → 1 0111 0111
             b、十六进制转二进制:十六进制从右往左,每十六进制对应二进制
                        0xAB → 1010 1011
             一位16进制数占1字节空间
     
    3.数值在计算机中的存取方式
        ① 存(任何数据在计算机存放的都是补码)
             数据的表现形式(原码、反码、补码)
             a、原码:数据本身的二进制
                    无符号数:
                                    15 原码 → 0000 1111
                    有符号数:
                                     正数:+15 原码 → 0000 1111
                                     负数:- 15 原码 → 1000 1111
             b、反码:
                    无符号数:反码 = 原码
                                    15 反码 → 0000 1111
                    有符号数:
                                     正数:反码 = 原码
                                               +15 原码 → 0000 1111
                                     负数:符号位不变,其他位取反
                                               - 15 原码 → 1111 0000
             c、补码:
                    无符号数:补码 = 原码
                                     15 补码 → 0000 1111
                    有符号数:
                                     正数:补码 = 原码
                                                +15 原码 → 0000 1111
                                     负数:反码+1
                                                - 15 原码 → 1111 0001
                综上所述:无符号数及有符号正数,计算机存放的是原码(=补码=反码)
                                 有符号负数,计算机存放的是补码
        ① 取(类型不匹配,按变量原符号输出
             a、有符号取    %d    %ld    %lld    %f    %lf
                     步骤:先看最高位(符号位)是否是1?
                               如果是1,表示该数是一个负数的补码,符号位不变,其他取反,+1 补码的补码为原码
                               如果是0,表示该数是一个正数的补码,原样输出 
             b、无符号取    %u    %lu    %llu    %o    %x
                     步骤:内存数据原样输出
     
    1. void fun3()  
    2. {  
    3.     int num = -15;  
    4.     // 1000 1111 原码  
    5.     // 1111 0000 反码  
    6.     // 1111 0001 补码  
    7.     printf("signed int:%d\n", num);// 有符号取 -15  
    8.     printf("unsiged int:%u\n", num);// 无符号取 241(不对,int32位)  
    9.     char num2 = -15;  
    10.     printf("signed char:%d\n", num2);// 有符号取 -15  
    11.     printf("unsiged char:%u\n", num2&0x00ff);// 无符号取 241(不对,%u取32位不足补1)  
    12.     unsigned char num1 = 0xff;  
    13.     printf("num1 = %x\n", num1);  
    14.     printf("num1 = %d\n", num1);  
    15.     printf("num1 = %u\n", num1);  
    16.     printf("num1 = %d\n", (char)num1);  
    17. }  
            
       
     
             补码的意义
             ① 统一了领的编码
             ② 将符号位和其他位统一处理
             ③ 将减法运算转换为加法运算
             ④ 两个用补码表示的数相加时,如果最高位(符号位)有进位则被舍弃
     
             十六进制原样存取
     
    1. void fun4()  
    2. {  
    3.     char num = 0x9b;// 1001 1011  
    4.     printf("signed char:%d\n", num);   
    5.     // 1001 1011 → 1110 0100 → 1110 0101 →  
    6.     // 1*2^6+1*2^5+1*2^2+1*2^0=64+32+4+1= -101  
    7.     printf("unsiged char:%x\n", num);  
    8.     printf("unsiged char:%x\n", num&0x00ff);  
    9. }  
     
            
         
        数据的溢出
     
    1. void fun5()  
    2. {  
    3.     char num = 0xfe + 3;  
    4.     // 1111 1110 + 0000 0011  
    5.     // 计算机存储 1 0000 0001  
    6.     printf("signed num = %d\n", num);  
    7.     printf("unsigned num = %u\n", num &= 0x00ff);  
    8.     printf("unsigned num(16) = %#x\n", num);  
    9. }  
     
            
            
    4.char的取值范围
        char为例,说明有符号数、无符号数之间的范围
        signed char → 1111 1111 ~ 1000 0000    -127~ -0    
                                0000 0000 ~ 0111 1111    +0 ~ 127
        将-0直接定义为-128(1 0000 0000),    signed char → -128~127
     
    1. void fun06()  
    2. {  
    3.     char num = 0x80;// 1000 000 -127  
    4.     printf("%d\n", num);  
    5. }  
     
              
            
            unsigned char → 0000 0000 ~ 1111 1111    0 ~ 255
            signed\unsigned char表示256个数(空间范围相同)
     
    5.特殊的限定符关键字 → const    extern    register    volatile 
        ① const    只读变量,修饰变量为只读,不可被修改,必须初始化(gcc随机值)
     
    1. void fun7()  
    2. {  
    3.     // num只读变量,本质是变量,只是无法被赋值(写)  
    4.     const int num = 10;  
    5.     //num = 100;// error  
    6.     printf("num = %d\n", num);  
    7. }  
     
        ② register    寄存器变量,编译器尽可能将修饰变量放入寄存器中,如果失败将存放在内存中
            禁止对修饰变量取地址操作,&地址操作针对内存而言
     
    1. void fun8()  
    2. {  
    3.     register int num = 10;  
    4.     num = 15;  
    5.     printf("num = %d\n", num);  
    6.     //printf("num = %p\n", &num);// error  
    7. }  
     
            
     
        ③ volatile    防止编译器优化,强制访问内存,修饰变量禁止存入寄存器,禁止编译器忽略编译(逐条编译修饰变量)
     
    6.字符串常量
        ① 由一个或多个字符组成,且以字符'\0'结尾(编译器自动添加的结尾标记),双引号“”作用(字符串类型说明,取地址
        ② '\0'作用:
            a、字符串遍历:%s输出字符串,必须给定输出首地址,遇到'\0'结束输出
     
    1. void fun9()  
    2. {  
    3.     // 字符串常量  
    4.     printf("sizeof(%s) = %u\n""hello world"sizeof("hello world"));// 12  
    5.     // "hello world" 告诉编译器是字符串,取字符串首元素地址  
    6.     printf("%%s = %s\n%%u = %u\n%%s+1 = %s\n""hello world""hello world""hello world"+1);// "hello world"-1 访问非法内存,结果未知  
    7.     // 'A' 告诉编译器是字符,取ASCII码值  
    8.     printf("%%c = %c\n%%d = %d\n%%c+1 = %c\n"'A''A''A'+1);  
    9.     // %s遇到反'\0'结束  
    10.     printf("%s\n""hello\0world");// hello  
    11.     printf("%s\n""\0hello\0world");//  
    12. }  
     
            
     
    7.putchar( )    getchar( ) 区别
        ① getchar( )    获取键盘缓冲区的一个字符,带阻塞
     
    1. void fun10()  
    2. {  
    3.     printf("请输入一个字符:\n");  
    4.     char ch = 0;// 0 == '\0'  
    5.     ch = getchar();// 获取的字符通过返回值返回  
    6.     printf("ch = %c\n", ch);  
    7.     getchar();// 无变量接返回值丢弃  
    8.     ch = getchar();  
    9.     printf("ch = %c\n", ch);  
    10. }  
     
            
     
        ② putchar('ch'/ASCII)    输出一个字符/ASCII码值
     
    1. void fun11()  
    2. {  
    3.     printf("%c\n"'a');  
    4.     putchar('a');  
    5.     putchar('\n');  
    6.     putchar(97);  
    7.     putchar('\n');  
    8.     putchar(200);// 不确定  
    9. }  
     
            
     
    8.printf( )    输出格式补充    %md %0md %-md %m.nf
     
    1. void fun12()  
    2. {  
    3.     // %md  m表示所占终端的显示位宽,默认右对齐  
    4.     printf("#############\n");  
    5.     printf("##%5d##\n", 123);  
    6.     printf("##%2d##\n", 123);// 小于数据长度,原样输出  
    7.     // %0md 空出的位置补0  
    8.     printf("##%05d##\n", 123);  
    9.     // %-md 左对齐  
    10.     printf("##%-5d##\n", 123);  
    11.     // - 和 0 不可同时使用,%-0md不会补0  
    12.     // %m.nf       m表示显示位宽,n表示小数显示位数,自动四舍五入  
    13.     printf("##%6.2f##\n", 1.236F);  
    14. }  
     
            
     
    9.算数运算符    / 取整    % 取余    ++ 自加    -- 自减
        ① /    %
     
    1. void fun13()  
    2. {  
    3.     // / 取整  
    4.     printf("1/2 = %d\n5/2 = %d\n", 1 / 2, 5 / 2);  
    5.     // % 取余数 判断一个数能否被另一个数整除  
    6.     printf("1%%2 = %d\n5%%2 = %d\n", 1 % 2, 5 % 2);  
    7.     if (5 % 2 == 0)  
    8.     {  
    9.         printf("5被2整除\n");  
    10.     }  
    11.     else  
    12.     {  
    13.         printf("5不被2整除\n");  
    14.     }  
    15.     // 将num的每位数字单独输出  
    16.     int num = 1234;  
    17.     printf("%d,%d,%d,%d\n", num / 1000, num / 100 % 10, num / 10 % 10, num % 10);  
    18.     printf("%d,%d,%d,%d\n", num / 1000, num % 1000 / 100, num % 100 / 10, num % 10);  
    19. }  
     
            
     
        ① ++    --
            a、作为独立语句时,i++与++i效果一致
     
    1. void fun14()  
    2. {  
    3.     int i = 10;  
    4.     i++;// i=i+1  
    5.     printf("i = %d\n", i);  
    6.     int j = 10;  
    7.     ++j;// i=j+1  
    8.     printf("j = %d\n", j);  
    9.     int k = 10;  
    10.     k--;// k=k-1  
    11.     printf("k = %d\n", k);  
    12.     int h = 10;  
    13.     --h;// h=h-1  
    14.     printf("h = %d\n", h);  
    15.     // ++ -- 作为独立语句时,i++与++i效果一致  
    16. }  
     
            
     
            b、非独立语句时,在变量右边i++:先使用后自增/减,在变量左边++i:先自增/减在使用
     
    1. void fun15()  
    2. {  
    3.     int i = 10;  
    4.     int j = 0;  
    5.     int k = 0;  
    6.     j = i++;// j=i; i=i+1;  
    7.     // i=11,j=10  
    8.     k = ++i;// i=i+1; j=i;  
    9.     // i=12,k=12  
    10.     printf("i = %d, j = %d, k = %d\n", i, j, k); 
    11. }  
     
            
     
    10.赋值运算符    =    +=    -=    *=     /=    %=
        ① 将=右边的值,赋值给=左边
            左值:能被写操作,能在=左边,也可在右边
            右值:不能在=左边的值,只能在=右边
     
    1. void fun16()  
    2. {  
    3.     int num = 0;// num左值  
    4.     num = 100;// 100为右值  
    5.     const int data = 10;// data为右值  
    6.     int num2 = 0;  
    7.     num2 = num;// num2,num都为左值  
    8. }  
        ② [+=    -=    *=     /=    %= ]中=右边为一个整体
            a+=b+c → a=a+(b+c)
     
    1. void fun17()  
    2. {  
    3.     int num = 10;  
    4.     num *= 3 + 5;// num = num*(3+5)  
    5.     printf("num = %d\n", num);  
    6. }  
     
            
     
     
    11.关系运算符
            
        关系运算符为双目运算符,其结合性均为左结合
        当条件成立时结果为1,条件不成立结果为0
     
     
    12.逻辑运算符
            
        “真”对应的值为1,“假”对应的值为0
        a、! 逻辑非
     
    1. void fun18()  
    2. {  
    3.     printf("!0 = %d\n", !0);  
    4.     printf("!1 = %d\n", !1);  
    5.     printf("!100 = %d\n", !100);  
    6.     printf("!-100 = %d\n", !-100);  
    7. }  
            
             
     
        b、&& 逻辑与    A&&B AB同真为真,当A为真才会判断B表达式
     
    1. fun19()  
    2. {  
    3.     printf("3 > 4 && 5 < 3, %d\n", 3 > 4 && 5 < 3);  
    4.     printf("3 < 4 && 5 < 3, %d\n", 3 < 4 && 5 < 3);  
    5.     printf("3 < 4 && 5 > 3, %d\n", 3 < 4 && 5 > 3);  
    6.     4 < 3 && printf("one\n");  
    7.     4 > 3 && printf("two\n");  
    8. }  
            
             
     
        c、|| 逻辑或    A||B AB同假为假,当A为假才会判断B表达式
     
    1. fun20()  
    2. {  
    3.     printf("3 > 4 || 5 < 3, %d\n", 3 > 4 || 5 < 3);  
    4.     printf("3 < 4 || 5 < 3, %d\n", 3 < 4 || 5 < 3);  
    5.     printf("3 < 4 || 5 > 3, %d\n", 3 < 4 || 5 > 3);  
    6.     4 < 3 || printf("one\n");  
    7.     4 > 3 || printf("two\n");  
    8. }  
            
             
     
    展开全文
  • 最近学计算机组成原理,遇到一个问题,用有符号八位二进制数表示-128。我看到这个题时一脸懵逼,不是八位二进制数表示的原码和反码范围...但是补码的0没有正负之分,能够表示的范围为-128~128。所以-128的补码表示为...
  • 从上文:计算机原码、反码和补码可知,计算机有三种编码方式来表示同一个数:原码:符号位加上真值绝对值,第一位表示符号,其余位表示值。...对于+1和-1,[+1] = [0001] = [0001] = [000...
  • 机器数计算机中数据;构成:符号位+真值;“0”表示正“1”表示负例:1、符号数表示机器数表示方法;①原码最高位为符号位(用“0”表示正,用“1”表示负),...[X]=[X]若X<0;[X]=对原码符号位不变...
  • 理解补码的要点

    2020-12-06 23:43:02
    在寄存器中以补码的形式存储 表示方法 正数的补码即其本身; 负数的补码:其反码的基础上加1 取值范围:-128~127 对应(0x80~0x7f) 举例: -1-2 =(-1)+(-2)= (0X11111111)补 +(0X11111110)补 = (0X11111101 ...
  • 最近复习c++,发现原码反码补码以及有符号数和无符号数表示范围这方面概念很模糊,现整理如下,供大家参考。 1、原码: 最高位表示数符号,其他位表示数值 例如:[+7] = 0000 0111 [-7] = 1000 0111 2、...
  • 3.问原反补码的取值范围。4问原反补码的表示方法。 【要点分析】 1.原反补码都是带符号的数,二进制bit位中,最高一位为符号位,0代表正,1代表负。其余各位是数据位。 2.在正数中,原码=反码=补码。 3.在负数中,...
  • 前提:1.本文使用8位二进制表示 ... 8位二进制原码的表示范围:-127~+127 8位二进制反码的表示范围:-127~+127 8位二进制补码的表示范围:-128~+127  -(2^7-1)= -127 原码:1111 1111 补码:1000 0001  ...
  • 原反基本概念: 1、原码:一个十进制数字直接转化成二进制序列 反码:将原码按位取反(无符号型) 补码补码=反码+1 2、数据范围: 无符号数 (int 类型) 0~255 有符号数 (char类型) -128~127 1 (7个01...
  • 计算原码反码补码

    2017-03-30 16:27:13
    大学里面学了n多次原反补,每次都忘得巨干净,写下来是不是就不用找度娘了呢~本次举例默认用8位二进制表示,因为有溢出问题,所以强调一下原码范围:-127~127反码范围:-127~127补码范围:-128~127注意: -128没有...
  • 这篇文章对二进制讲解的非常深刻,在此进行转发,以备后面复习。这里另外推荐另外一篇文章,加强学习进制转换 -128的8位补码是:1000 0000B,换算成十进制就是 128...反码的范围 反码表示法规定:正数的反码与其...
  • 原码、反码、补码

    2018-11-29 16:45:48
    原码:第一位表示符号,...8位二进制数取值范围是[-127 , 127] 反码:正数反码是其本身,负数反码按位取反 (符号位不变) [+1] = [00000001] = [00000001] [-1] = [10000001] = [11111110] 补码:...
  • 在这里先向大家道个歉,之前在char类型-128到127文章中没有讲清楚原反具体求解过程,并且犯了严重错误,补码-128是不存在原码和反码. 简单介绍一下原码取值范围都是-128到+127,并且0都存在两种状态+0和-0。...
  • 字长为8位原码表示范围:-127~+127 【+127】=01111111 【-127】=11111111 数值“0”有两种原码形式: 【+0】=00000000 【-0】=10000000 2、反码: (1)正数情况:X=X 例:X=+1101001(+105) X=...
  • 在这里先向大家道个歉,之前在char类型-128到127文章中没有讲清楚原反具体求解过程,并且犯了严重错误,补码-128是不存在源码和反码. 简单介绍一下源码和反码取值范围都是-127到+127,并且0都存在两种状态+0...
  • 原码反码补码

    2018-10-08 09:17:00
    1. 原码 原码就是符号位加上真值绝对值, 即用第一位表示符号, 其余位表示值. 比如如果是8位二进制:【+1】=00000001 【-1】=10000001 第一位是符号位. 因为第一位是符号位, 所以8位二进制数取值...正数的反...
  • -补--移

    2015-05-01 08:01:08
    一 计算机对带符号数的表示有三种方法:原码、反码和补码  ... 8位原码和反码能够表示数的范围是-127~127  ... 8位补码能够表示数的范围是 -128~127  ... 所以既然范围是-128~127,那肯定...补码的1111 1111转
  • 127的原反补码都为:1111 1111 –127的原反补码: 原码:1111 1111 反码:1000 0000 补码:1000 0001 重点:那么-128怎么表示呢? 在八位二进制下,因为有一位是符号位,原码和反码只能表示0到127,-0到-127,所以-...
  • 概念:负数的补码是该 数 绝 对 值   码 按 位 取 ,然 后 对 整个数 加 1步骤:1.确定byte是1个字节,也就是8位2.最大应该是0111 1111,因为第一位是符号位,0表示正数3.最小应该是1000 0000,同理,...
  • 原码 原码就是符号位加上真值绝对值, 即用第一位表示符号, 其余位表示值. 比如如果是8位二进制:[+1] = 0000 0001[-1] = 1000 0001第一位是符号位....反码表示方法是:正数反码是其本身负数的反
  • 1.机器中数的表示范围: 对于字长为n+位的无符号数的表示范围是 ...2.原反补码表示范围: 原码:-127~+127 反码:-127~+127 补码:-128~+127 补码的范围最大 练习题 3.定点小数的表示范围: 若...
  • 2、正数的原补码都是一样。 3、负数的补码是各位取反(反码),最低位再加1。 计算机数值加减是通过补码形式进行,负数的补码符号位可以参与运算, 所以负数的补码进行运算时符号位可以进位(最高位既表示...
  • //,我们只看负数,因为只有负数的原不同, //1)首先看下纯小数原码,补码,反码,x是真值,假设字节长度为n,真值意思就是是它原本值,比如 //-0.10000,换成十进制就是-0.5;n就是计算机位数,说白了就是...
  • 概念:负数的补码是该 数 绝 对 值 的原 码 按 位 取 ,然 后 对 整个数 加 1步骤:1.确定byte是1个字节,也就是8位2.最大应该是0111 1111,因为第一位是符号位,0表示正数3.最小应该是1000 0000,同理,表示...
  • 概念:负数的补码是该 数 绝 对 值   码 按 位 取 ,然 后 对 整个数 加 1 步骤: 1.确定byte是1个字节,也就是8位 2.最大应该是0111 1111,因为第一位是符号位,0表示正数 3.最小应该是1000...
  • 概念:负数的补码是该 数 绝 对 值   码 按 位 取 ,然 后 对 整个数 加 1 步骤: 1.确定byte是1个字节,也就是8位 3.最小该当是1000 0000,同理,默示负数最小(1111 1111是最大负数-1) 4....

空空如也

空空如也

1 2 3 4
收藏数 74
精华内容 29
关键字:

原反补码的范围