zoukankan      html  css  js  c++  java
  • C 位域运算

    typedef struct  
    {
    int a:2;
    int b:2;
    int c:1;
    }test;
    int main()
    {
    test t;
    t.a = 1;
    t.b = 3;
    t.c = 1;
    printf("%d",t.a);
    printf("%d",t.b);
    printf("%d",t.c);
    }

    结果是1 -1 -1

    请问一下这是怎么算出来的?
    1 -1 -1
    还有就是根据CPU小端模式和大端模式,这几位是怎样放的?
    小端模式
    低 高
    1 1 1 1 0 0 0 0

    大端模式
    高 低
    0 0 0 0 1 1 1 1

     
    1.有些信息在存储时,并不需要占用一个完整的字节, 而只需占几个或一个二进制位。所以通过位域可以实现该功能。
    2.下面再说下计算机的数值表示,对于二进制数(0,1代码)一般采用补码表示,正数的补码与原码相同,负数的补码符号位为1,其余位为该数绝对值的原码按位取反;然后整个数加1。
    3.知道了上述两点,就容易判断了a表示有两位,又由于t.a=1,即用两位二进制代码表示为:01,所以值为1,同理t.b=3,用两位二进制代码表示为11,由于第一位为1,所以是负数,后位取反后为0,然后加1,得到结果为-1;由于c就一位,t.c=1,用二进制代码表示为1,所以为负,后面没有即认为是零,而考虑到第二条,故应绝对值加1,即-1
  • 相关阅读:
    vue工作篇
    idea快捷键
    idea怎么随时随地调整字体大小
    idea配置maven
    idea启动加速
    idea配置tomcat
    idea设置哪个浏览器打开
    jsonArray和jsonObject的理解
    多文件上传保存到本地服务器
    并发编程
  • 原文地址:https://www.cnblogs.com/ccmfc/p/3461062.html
Copyright © 2011-2022 走看看