zoukankan      html  css  js  c++  java
  • 变量的域内赋值和域外赋值

    1.无符号数的赋值与实际值

    unsigned char 是8位无符号数,不存在符号位,把符号位也当作数值位处理,表示的范围为[0,2^8-1],即[0,255]的256个数,T=2^8=256。

    小于范围内的数+nT 使之在范围内,大于范围内的数-nT使之在范围内。

     1 #include <stdio.h>
     2 int main(void)
     3 {    
     4     //unsigned char-[0,FF]               
     5     unsigned char c1 = -2; 
     6     unsigned char c2 = -1; 
     7     unsigned char c3 = 255; 
     8     unsigned char c4 = 256;
     9     unsigned char c5 = 257;
    10     printf("c1 = %0X
    ",c1);
    11     printf("c2 = %0X
    ",c2);
    12     printf("c3 = %0X
    ",c3);
    13     printf("c4 = %0X
    ",c4);
    14     printf("c5 = %0X
    ",c5);
    15     return 0;
    16 
    17 }

    分析:

    -2是负数:原码-1000 0010 补码-1111 1110  unsigned类型化原码(和补码直接相等) 1111 1110

    -1是负数:原码-1000 0001 补码-1111 1111  unsigned类型化原码 1111 1111

    255是正数:原码-1111 1111 补码-1111 1111 unsigned类型化原码 1111 1111

    256是正数:原码-[1] 0000 0000 八位补码:0000 0000 unsigned类型化原码 0000 0000

    257是正数:原码-[1] 0000 0001 八位补码:0000 0001 unsigned类型化原码 0000 0001

    哲学结论:大者小之所伏,小者大之所倚。

    二.有符号数的赋值与实际值

    char 是8位符号数,存在1位符号位,表示的范围为[-2^7,2^7-1],即[-128,127]的256个数,T=2^8=256。

    小于范围内的数+nT 使之在范围内,大于范围内的数-nT使之在范围内。

     1 #include <stdio.h>
     2 int main(void)
     3 {   //char - [-128,127]                
     4     char c1 = 127; 
     5     char c2 = 128; 
     6     char c3 = 129; 
     7     char c4 = -128;
     8     char c5 = -129;
     9     char c6 = -130;
    10     printf("c1 = %d
    ",c1);
    11     printf("c2 = %d
    ",c2);
    12     printf("c3 = %d
    ",c3);
    13     printf("c4 = %d
    ",c4);
    14     printf("c5 = %d
    ",c5);
    15     printf("c6 = %d
    ",c6);
    16     return 0;
    17 
    18 }

    分析:

     正数高位为0:原码=反码=补码

     数字->原码->补码->[原码]->数字

     127  0111 1111                 0111 1111          127

     128  0 1000 0000          [0]1000 0000 <=>1 1000 0000(CPU处理猜测) -128         

     129  0 1000 0001          [0]1000 0001          -127

    -128  1 1000 0000          [1]1000 0000 <=>1 1000 0000(CPU处理猜测) -128

    -129  1 1000 0001          [1]0111 1111          127

    -130  1 1000 0010          [1]0111 1110          126

    哲学结论:大者小之所伏,小者大之所倚。
    -0        1000 0000          [1]0000 0000           0

    +0       0000 0000              0000  0000          0   

     另外一种算法:

    大于127的数:该数-128+(-128) = 该数 - 256 = 该数 - 2^8

    小于-128的数: 该数 - (-128) +128 = 该数 + 256 = 该数 + 2^8

    为什么要减去或加上256而不是255呢?

    因为8bit位的char的范围是[-128,127],共2^8=256个数。

    即一个周期是256,所以需要减去256。

  • 相关阅读:
    阿蒂亚谈数学——我对《数学的统一性》的笔记
    陶哲轩实分析习题8.5.6
    陶哲轩实分析习题8.5.2
    陶哲轩实分析习题8.5.9
    陶哲轩实分析习题8.5.5
    陶哲轩实分析习题8.5.6
    陶哲轩实分析习题8.5.2
    陶哲轩实分析习题8.5.1
    陶哲轩实分析习题8.5.9
    陶哲轩实分析习题8.5.5
  • 原文地址:https://www.cnblogs.com/shijianchuzhenzhi/p/4383664.html
Copyright © 2011-2022 走看看