(1)C语言基础,学习笔记(原码 反码 补码 )

2019-10-29  本文已影响0人  王多鱼2

字长

原码,反码,补码(二进制)

假设我们的计算机字长8位 1字节 = 8bit
10的二进制 原码 0000 1010 
                   反码  0000 1010      
                   补码 0000 1010 
-10的二进制 原码 1000 1010
                     反码 1111 0101
                         +                 1
                     补码  1111 0110

在计算机里面 数值 一律用补码来表示(存储)
为什么用补码存: 符号位和其他的位统一处理 减法也可以按照加法来处理

举例 :5 -10 = -5 =》 5+ (-10)
5 补码 0000 0101
-5补码 -》 原码 1000 0101 -》反码 1111 1010 -》补码 1111 1011
  0000 0101(5的补码)  +1111 0110 (-10的补码)= 1111  1011 (-5的补码)

特殊值
0 原码 0000 0000
反码 0000 0000
补码 0000 0000

8位整数里原码的取值范围为-127到+127 反码也是
但补码是-128到+127,所以 -128的补码应该是10000000

数值
127 原码 0111 1111 反码 0111 1111 补码0111 1111
-127 原码 1111 1111 反码 1000 0000 补码1000 0001

-128 无 无 1000 0000

4. char c = 128; 以下都是拿的以为上海兄弟的笔记;

printf("%d\n",c);
printf("%hhd\n",c);
printf("%hd\n",c);
printf("%hu\n",c);
输出结果,解释为什么是这样的? 
  1. 4.1 格式输出符
    格式符号 意义
    %a 浮点数、十六进制数字和p-记数法 (C99)
    %A 浮点数、十六进制数字和P-记数法 (C99)
    %c 一个字符
    %d 有符号十进制整数
    %e 浮点数、e-记数法
    %E 浮点数、E-记数法
    %f 浮点数,十进制记数法
    %g 根据数值不同自动选择%f或者%e。%e格式在指数小于-4或者大于等于精度时使用
    %G 根据数值不同自动选择%f或者%E。%E格式在指数小于-4或者大于等于精度时使用
    %i 有符号十进制整数 (与%d相同)
    %o 无符号八进制整数
    %p 指针(就是指地址)
    %s 字符串
    %u 无符号十进制整数
    %x 使用十六进制数字0f 的无符号十六进制整数
    %X 使用十六进制数字0F的无符号十六进制整数
    %% 打印一个百分号
TIM截图20191029004306.png 16.png 25.png 35.png ![![ 35.png
上一篇下一篇

猜你喜欢

热点阅读