美文网首页
(1)C语言基础,学习笔记(原码 反码 补码 )

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

作者: 王多鱼2 | 来源:发表于2019-10-29 00:46 被阅读0次

字长

  • 是CPU的主要技术指标之一,指的是CPU一次最大能并行处理的二进制位数。
  • 现在主流的自算计字长是32位与64位
  • 字长的长度是不固定的,对于不同的CPU、字长的长度也不一样.8位的CPU一次只能处理一个字节,而32位的 CPU一次就能处理4个字节,同理字长为64位的CPU一次可以处理8个字节.

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

  • 为了表示负数,将最高位解释为符号位
  • 正数的原码,反码,补码均相同
  • 对于负数,已知原码求反码,符号位不变,其他位按位求反
  • 对于负数,已知原码求补码,先求反码,再在反码末位加1
假设我们的计算机字长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

相关文章

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

    字长 是CPU的主要技术指标之一,指的是CPU一次最大能并行处理的二进制位数。 现在主流的自算计字长是32位与64...

  • 原码、反码和补码

    正数的原码、反码和补码相同,亦是正数 负数的原码、反码和补码符号位为1,代表负数,反码在原码的基础上符号位不变,其...

  • 软件测评师做题技巧

    第一类补码,反码,原码 正数:原码=反码;补码=原码负数:反码=原码求反;补码=反码+1 第二类用例概率的计算 测...

  • 计算机为什么要使用原码、反码、补码

    1. 什么是原码、反码、补码 先看一个例子: +1和-1的原码、反码、补码的表示 原码、反码、补码的计算方式如下:...

  • 2018-10-22 Python31 原码、反码、补码

    原码、反码、补码 1)如何计算补码?规则: 正数:原码 = 反码 = 补码负数:反码 = 符号位不变,其他位取反补...

  • [计基]-二进制之补码

    一.基础名词 原码 : 0011 反码 :0011(原码) >> 1100(反码) (原码按位取反) 补码 :00...

  • 计算机原理-原码反码补码

    原码反码补码 /*最近在重新学习一遍C语言,以更加深入的理解C语言,为C++打下比较坚实的基础。此次学习主要依据的...

  • 补码

    原码、反码、补码 原码:符号位 反码:减法变加法 补码:+1解决-0问题 数学原理 同余 反码:mod127 补码...

  • 原码、反码、补码和移码

    书中关于原码、反码、补码和移码的定义如下(n是机器字长):原码: 反码: 补码: 移码: 原码, 反码, 补码的基...

  • Java中的二进制相关运算

    正数的原码、反码、补码都是一样的负数第一位是1,表示负数,反码是在原码的基础上,符号位不动,其余取反;补码是反码+...

网友评论

      本文标题:(1)C语言基础,学习笔记(原码 反码 补码 )

      本文链接:https://www.haomeiwen.com/subject/drrpyctx.html