• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

I'm-going

  • 博客园
  • 联系
  • 订阅
  • 管理

公告

View Post

1.2

<<左移

>>右移(用符号位填充)

<<<咩有

>>>用0填充高位

1<<35和1<<3是相同的

x&1=1是奇数;0是偶数

获取二进制位是1还是0:这个二进制数&0001000(1表示该位)再反向移动到最低位看是1还是0

 

#include <stdio.h> 
int main(){
	int a = 5&7;  // 101 111
	printf("%d\n", a);  // 5:101
	a = 5|7;
	printf("%d\n", a);  // 7:111
	a = ~8;
	printf("%d\n", a);  // -9
	a = 5&&7;
	printf("%d\n", a);  // 1
	a = 5||7;
	printf("%d\n", a);  // 1
	a = !8;
	printf("%d\n", a);  // 0
	a = 5^7;
	printf("%d\n", a);  // 2:010
	a = 1<<2;
	printf("%d\n", a);  // 4
	a = -8>>2;  // 1000 1000
	printf("%d\n", a);  // -2:1000 0010
	return 0;
} 


8的二进制如下: 0000100

取反后: 11111011 这是一个负数的补码形式,但这是哪个负数的补码呢?
我们先看看负数的补码如何表示的。【负数的补码是对其原码逐位取反,但符号位除外;然后整个数加1。】
我们返回去弄:
先把11111011-1=11111010
然后符号位以外取反:10000101
看看除符号外的数:0000101 是9 所以这个数是-9

交换两个整数变量的值:3次异或运算 101,111 -》010-》101^010=111,111^010=101

不用判断语句,求正熟的绝对值

1-1000放在1001个数组中,有一个重复,求该数

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(){
    srand(time(NULL));
    int i = 0;
    int num = 5;
    int arr[num+1];
    int tarr[num];
    int res = 0;
    int rnum = rand()%(num-1)+1;  // 需要 0<=x<=10的随机数时,就写成 rand()%11,0–100就写成 rand()%101
    printf("%d\n", rnum);  // 0<=x<=num-1,1<=x<=num
    for(i=0; i<num; i++){
        arr[i] = i+1;
        tarr[i] = i+1;
    }
    arr[i] = rnum;
    for(i=0; i<num; i++){
        printf("%d ", tarr[i]);
    }
    printf("\n");
    for(i=0; i<num+1; i++){
        printf("%d ", arr[i]);
    }
    printf("\n");
    
    for(i=0; i<num; i++){
        res = res^tarr[i];
    }
    for(i=0; i<num+1; i++){
        res = res^arr[i];
    }
    
    printf("%d\n", res);
    return 0;
    
}

 

4

1 2 3 4 5

1 2 3 4 5 4

4 

 

#include <stdio.h> int main(){int a = 5&7;  // 101 111printf("%d\n", a);  // 5:101a = 5|7;printf("%d\n", a);  // 7:111a = ~8;printf("%d\n", a);  // -9a = 5&&7;printf("%d\n", a);  // 1a = 5||7;printf("%d\n", a);  // 1a = !8;printf("%d\n", a);  // 0a = 5^7;printf("%d\n", a);  // 2:010a = 1<<2;printf("%d\n", a);  // 4a = -8>>2;  // 1000 1000printf("%d\n", a);  // -2:1000 0010return 0;} 

posted on 2020-03-07 16:04  I'm-going  阅读(259)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3