C语言位操作源码片段-创新互联

如下的代码段是关于C语言位操作片段的代码。

成都创新互联一直秉承“诚信做人,踏实做事”的原则,不欺瞒客户,是我们最起码的底线! 以服务为基础,以质量求生存,以技术求发展,成交一个客户多一个朋友!为您提供成都网站设计、成都网站制作、成都网页设计、小程序定制开发、成都网站开发、成都网站制作、成都软件开发、成都APP应用开发是成都本地专业的网站建设和网站设计公司,等你一起来见证!
  Copyright 2011 Shao-Chuan Wang 

    Permission is hereby granted, free of charge, to any person obtaining a copy
    of this software and associated documentation files (the "Software"), to deal
    in the Software without restriction, including without limitation the rights
    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
    copies of the Software, and to permit persons to whom the Software is
    furnished to do so, subject to the following conditions:

    The above copyright notice and this permission notice shall be included in
    all copies or substantial portions of the Software.

    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
    THE SOFTWARE.
#include 
#include 

typedef struct {
  int size;
} packed_bits;

#define INT_MAX_BIT_MASK (1 << (INT_NBITS-1))

{
  if (!b_array)
    return NULL;
  p = malloc(sizeof(packed_bits));
  if (!p) {
    free(b_array);
    return NULL;
  }
  p->size = n_int;
  p->b = b_array;
  return p;
}

{
  int i;
  if (!p)
    return -1;
  b = p->b;
  for (i = p->size-1;i >= 0;i--) {
    b[i] = b[i] << 1;
    if (i-1 >=0 && b[i-1] & INT_MAX_BIT_MASK)
      b[i]++;
  }
  return 0;
}

{
  int i;
  if (!p)
    return -1;
  b = p->b;
  for (i = 0;i < p->size;i++) {
    b[i] = b[i] >> 1;
    if (i+1 < p->size && (b[i+1] & 1))
      b[i] |= INT_MAX_BIT_MASK;
  }
  return 0;  
}

{
  unsigned int offset = n % INT_NBITS;
  unsigned int idx = n / INT_NBITS;
  if (!p)
    return -1;
  b = p->b;
  return (b[idx] & (1 << offset)) != 0;
}

{
  unsigned int offset = n % INT_NBITS;
  unsigned int idx = n / INT_NBITS;
  if (!p)
    return -1;
  b = p->b;
  b[idx] |= (1<b;
  b[idx] &= ~(1<b;
    printf("%d", read_bit(p, j));
    if (j % INT_NBITS==0)
      printf("n");
  }
  printf("n");
  return;
}

{
  int n_int = 4;
  if (!p) {
    fprintf(stderr, "Out of memory!n");
    return EXIT_FAILURE;
  }

  set_bit(p, 1);
  set_bit(p, 127);
  print_bits(p);

  return 0;
}

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


本文名称:C语言位操作源码片段-创新互联
本文网址:http://bzwzjz.com/article/djcsps.html

其他资讯

Copyright © 2007-2020 广东宝晨空调科技有限公司 All Rights Reserved 粤ICP备2022107769号
友情链接: H5网站制作 网站建设 企业网站建设 成都网站设计 网站制作 营销型网站建设 营销型网站建设 网站建设公司 专业网站设计 公司网站建设 响应式网站设计 网站设计制作 成都商城网站建设 成都网站建设 网站制作 成都企业网站制作 宜宾网站设计 响应式网站设计方案 成都网站设计 成都网站设计 营销型网站建设 重庆网站建设